首页
社区
课程
招聘
[原创]修改易语言EXE程序让它不按ESC退出
发表于: 2019-7-24 16:55 5682

[原创]修改易语言EXE程序让它不按ESC退出

2019-7-24 16:55
5682

很多时候,我们发现一些小程序很有用,但是粗心的作者用易语言开发的过程中,并没设置主程序是否按ESC不退出,所以有了下面的逆向过程。

一般见的最多或者最先想到的是下断点,exitprocess是结束主程序的断点,但是我尝试下 bp ExitProcess 和 bp TerminateProcess的过程中,发现并没有有效的阻止程序退出,

后来,尝试销毁窗体 bp DestroyWindow 的API断点,虽然能断下来,但是修改相关代码后,发现还是不能阻止退出

后来,想到了消息发送方式:bp SendMessageA,果不其然,这次修改相关代码后,就不会按ESC退出了

对发送消息下断,看堆栈,分析消息ID是第几个参数

0018FCEC   0041108A  /CALL 到 SendMessageA 来自 test.00411088
0018FCF0   00230998  |hWnd = 0x230998
0018FCF4   00000080  |Message = WM_SETICON
0018FCF8   00000001  |wParam = 0x1
0018FCFC   25800B8D  \lParam = 0x25800B8D

看反汇编窗口,参数设置为:

00411079  |.  8B3D BCC34700 mov edi,dword ptr ds:[<&USER32.SendMessa>;  user32.SendMessageA
0041107F  |.  50            push eax                                 ; /lParam = 0x25800B8D
00411080  |.  6A 01         push 0x1                                 ; |wParam = 0x1
00411082  |.  68 80000000   push 0x80                                ; |Message = WM_SETICON
00411087  |.  51            push ecx                                 ; |hWnd = 0x230998
00411088  |.  FFD7          call edi                                 ; \SendMessageA

是第二个参数,取消原断点,并在原SendMessageA断点位置下条件断点


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-7-24 16:58 被小木鱼编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为什么不直接改设置呢?
2019-7-27 23:24
0
雪    币: 193
活跃值: (857)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
Rainbow丶 为什么不直接改设置呢?
因为一些EXE没有源码!所以逆向修改!
2019-8-1 14:17
0
雪    币: 433
活跃值: (1910)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
对嘛...这种针对程序自身接受热键的时候也就两个选择
2019-8-2 02:14
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错啊~
2019-8-2 13:11
0
游客
登录 | 注册 方可回帖
返回
//