先发个课外作业
因为之前某段时间里面曾经用过这个小工具在上班时搞小动作,所以对这个软件还是比较上心,感觉挺好用的缺点是界面内有些看不顺眼的东西,之前就一直想弄掉
正好这次K大讲到这方面,直播完当晚就试验了一下,去掉了弹网页,但是窗口没搞定
主要原因是一开始去改了堆栈数据没法保存,后来知道这样不行,就想着NOP掉CALL
这时候发现了另一个问题,就是界面内所有的WINDOW都是一个CALL创建的,NOP掉之后所有的窗口都没有了,想到了要把创建关键的那个窗口的那次CALL参数给改掉,但是无从下手,因为没有编程经验,虽然以前在学校学过一点汇编。。。(楼主工科男)
今天经@L4Nce 在群里提醒,改了一下代码,用JMP到空白的地方去写了几句判断,终于算是达到目的了
但是当中有个问题,我想将软件界面高度改小一点,到正好容纳那几个按钮的高度,代码也写了进去,调试看起来CALL参数也改掉了,但是软件界面却没有变,看起来是不起作用,此处请大神指点一下{:1_893:}
附上脱壳后的软件和修改后的软件
以下过程:
原来软件界面
带壳,ASPACK的忘了什么版本,总之手脱掉了
软件右边那个按钮,【注册沙丁鱼挂机赚钱】点击之后会跳出一个网页来,是想要干掉的
绿色那一大堆是没有用的,也是想干掉的
拖到资源修改器里面,发现里面显示好几个对话框,却没有一个是软件对应的,看起来这个方法是行不通的,不明白是什么原因会是这样
然后是其他方法
开始是用C32ASM去掉了右边那个按钮的作用,但是按钮还在,只是点了之后会跳出资源管理器,猜可能是调用EXPLORER.EXE然后给参数打开网页的,过程就不贴图了,K大讲的很详细这个也很简单的
(此处搜索到了网址,没有搜索到EXPLORER.EXE关键字,所以只是填充了网址,至于怎么将调用EXPLORER.EXE去掉,使点击了按钮以后不会跳出资源管理器,这个请能人分析一下给个提示{:1_893:},我是没找到改的地方)
这时网页去掉了,需要改界面
用CREATEWINDOWEXA搜
开始改堆栈,发现无法保存,于是想到NOP掉所有的CALL
就是这时候发现软件所有的WINDOW都是一个CALL创建的,NOP掉之后所有的窗口都没有了
NOP掉CALL之后
这样不行,于是想到了要把创建关键窗口的那两次CALL参数给改掉,其他的不能动
第一次写了如下代码,目的是将右边的按钮和绿色窗口的尺寸改为0,然后将窗口名称下面那个下拉窗口的宽度缩短,将【刷新窗口列表】的位置移动到下来列表窗的右边,最后将整个软件的高度缩小到刚好容纳这几个按钮,不留空白
从第5个PUSH处JMP 0046B2E5
0046B2E5处的代码是添加的,如下:
cmp dword ptr ss:,00000108
jz 00000001
cmp dword ptr ss:,000001cb
jz 00000002
cmp dword ptr ss:,00000080
jz 00000001
cmp dword ptr ss:,000001a8
jz 00000003
push dword ptr ss:
push dword ptr ss:
jz 00000004
push 0
push 0
jz 00000004
push a0
push 1E7
jz 00000004
push a0
push 14E
cmp dword ptr ss:,00000018
jz 00000005
push dword ptr ss:
push dword ptr ss:
jmp 0045E94d
push 0
push 150
jmp 0045E94d
保存之后,会出错,这里我也不知道是为什么
然后第二次,代码修改如下,将右边的按钮和绿色窗口的尺寸改为0,然后将【刷新窗口列表】的宽度加大到合适软件界面的宽度,位置不移动,最后将整个软件的高度缩小到刚好容纳这几个按钮,不留空白
从第5个PUSH处JMP 0046B2E5
0046B2E5处的代码是添加的,如下:
cmp dword ptr ss:,00000108
jz 00000001
cmp dword ptr ss:,000001cb
jz 00000002
cmp dword ptr ss:,00000080
jz 00000001
cmp dword ptr ss:,00000050
jz 00000003
push dword ptr ss:
push dword ptr ss:
jmp 0045E947
push 0
push 0
jmp 0045E947
push be
push 1E7
jmp 0045E947
push 20
push 1c7
jmp 0045E947
这里改完后,可以运行了,该去掉的窗口也去掉了,但是唯一的主窗口没有改掉,也就是软件高度没有变化,底部留出一大片空白,是去掉的绿色窗口的区域
OD调试时堆栈的参数是显示已经改了的,不知道是为什么,有高手知道的话,麻烦指点一下,感激不尽
改完成之后
以上虽然做了一些修改,去掉了不想要的东西,但是也遗留下一些问题,没有找到调用资源管理器的地方,改了主窗口的尺寸却不起作用,希望看到的大侠们知道原因的提点一下,多谢啦{:1_893:}{:1_893:}
看来LZ在群里学到了不少知识 看着这个资源好像是易语言写的程序 本帖最后由 XKQ 于 2015-7-21 09:49 编辑
易语言的窗口应该还会在窗口创建后重新调整窗口,你应该用一下这个API:MoveWindow,然后改里面的参数Height应该可以了 我改好了一个用的是我昨天说的那个非常复杂的办法修改代码如下
004013F6 /E9 4B9F0600 jmp Unpack_1.0046B346
004013FB |90 nop
0046B346 60 pushad
0046B347 9C pushfd
0046B348 68 D6B34600 push Unpack_1.0046B3D6 ;ASCII "设置窗口透明度 1.0"
0046B34D 68 00000000 push 0x0 ;class
0046B352 68 00000000 push 0x0 ;hwndChildAfter
0046B357 68 00000000 push 0x0 ;hwndParent
0046B35C FF15 40654B00 call dword ptr ds:[<&user32.FindWindowEx>;user32.FindWindowExA
0046B362 68 04000000 push 0x4 ;uFlags
0046B367 68 D0000000 push 0xD0 ;cy
0046B36C 68 E9010000 push 0x1E9 ;cx
0046B371 68 9A000000 push 0x9A ;y
0046B376 68 B7010000 push 0x1B7 ;x
0046B37B 68 FEFFFFFF push -0x2 ;hWndlnsertAfter
0046B380 50 push eax ;hWnd
0046B381 FF15 D0644B00 call dword ptr ds:[<&user32.SetWindowPos>;user32.SetWindowPos
0046B387 9D popfd
0046B388 61 popad
0046B389 ^ E9 6E60F9FF jmp Unpack_1.004013FC
0046B3D6 C9 leave ;设置窗口透明度 1.0
0046B3D7 E8 D6C3B4B0 call B0FB77B2
0046B3DC BF DACDB8C3 mov edi,0xC3B8CDDA
0046B3E1 F7B6 C820312E div dword ptr ds:
0046B3E7 3000 xor byte ptr ds:,al
我在易语言窗口启动完成事件中做一个跳转,然后调用findwindow(后来发现导入表中没有,于是调用了FindWindowExA)获取窗口句柄,然后在调用SetWindowPos改变窗体大小。
XKQ 发表于 2015-7-21 09:48
易语言的窗口应该还会在窗口创建后重新调整窗口,你应该用一下这个API:MoveWindow,然后改里面的参数Height应 ...
隐藏的高手啊{:1_921:}{:1_921:} 我试了一下,忘了是下CreateWindow还是CreateWindowEX,反正是建立窗口的aqi断点,停在user32模块中,按alt-f9进入程序模块中,按几次ctrl-f9再找到edit的那个窗口把higt和weigh的参数都改成0,就把绿色的说明去掉了。
只是想改showwindow的参数的方法没有成功,下了断点进入程序模块中,没找到和edit相关的部分,第二种方法没成功,可我认为应该能找到,各位高手有办法没,教一下。
页:
[1]