首页
社区
课程
招聘
[原创]任意版本Delphi 的按钮事件的快速找法
发表于: 2012-5-8 01:10 10249

[原创]任意版本Delphi 的按钮事件的快速找法

2012-5-8 01:10
10249

对于delphi较新的版本无法使用DEDE寻找按钮事件,这里我找到了一种比较快捷的方法寻找按钮事件。
    用OD载入一个Delphi 2009 写的小程序,ctrl+g 来到401000,

00401000   . /04104000      DD Project1.00401004
00401004     \03            DB 03
00401005   .  07            DB 07
00401006   .  42 6F 6F 6C 6>ASCII "Boolean"
0040100D      01            DB 01
0040100E      00            DB 00

ctrl+b 搜索 Button1Click 不分大小写,

//Button1Click事件
0046E326   .  42 75 74 74 6>ASCII "Button1Click"
0046E332      12            DB 12
0046E333      00            DB 00
0046E334   .  C4E34600      DD Project1.0046E3C4
0046E338   .  0B            DB 0B

//Edit1Change事件
0046E339   .  45 64 69 74 3>ASCII "Edit1Change"
0046E344   .  06            DB 06
0046E345   .  54 46 6F 72 6>ASCII "TForm1"
0046E34B      03            DB 03

往下翻第一个就是按钮事件的入口:

0046E37C   .  B8 94E34600   MOV EAX,0046E394                         ;  ASCII "購/fd"
0046E381   .  E8 02D7FCFF   CALL 0043BA88
0046E386   .  C3            RETN

再往下翻第二个就是Edit1Change事件:

0046E3C4  /.  55            PUSH EBP
0046E3C5  |.  8BEC          MOV EBP,ESP
0046E3C7  |.  6A 00         PUSH 0
0046E3C9  |.  53            PUSH EBX
0046E3CA  |.  8BD8          MOV EBX,EAX
0046E3CC  |.  33C0          XOR EAX,EAX
0046E3CE  |.  55            PUSH EBP
0046E3CF  |.  68 2FE44600   PUSH 0046E42F
0046E3D4  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0046E3D7  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0046E3DA  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
0046E3DD  |.  8B83 80030000 MOV EAX,DWORD PTR DS:[EBX+380]
0046E3E3  |.  E8 D8CDFDFF   CALL 0044B1C0
0046E3E8  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0046E3EB  |.  BA 48E44600   MOV EDX,0046E448                         ;  UNICODE "12345"
0046E3F0  |.  E8 4F76F9FF   CALL 00405A44
0046E3F5  |.  75 12         JNZ SHORT 0046E409
0046E3F7  |.  BA 60E44600   MOV EDX,0046E460
0046E3FC  |.  8B83 7C030000 MOV EAX,DWORD PTR DS:[EBX+37C]
0046E402  |.  E8 F1CDFDFF   CALL 0044B1F8
0046E407  |.  EB 10         JMP SHORT 0046E419
0046E409  |>  BA 7CE44600   MOV EDX,0046E47C                         ;  UNICODE "Bad!!!!!"
0046E40E  |.  8B83 7C030000 MOV EAX,DWORD PTR DS:[EBX+37C]
0046E414  |.  E8 DFCDFDFF   CALL 0044B1F8

如果还有其他事件的话继续向下翻,这里就两个事件。
这种方法可以对付任意版本的delphi程序,加壳的程序可能会不行。。。


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

收藏
免费 6
支持
分享
最新回复 (9)
雪    币: 20
活跃值: (99)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
下面是练习的程序。
上传的附件:
2012-5-8 01:12
0
雪    币: 3658
活跃值: (4222)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
3
控件名称修改后不知道就不好用了.
2012-5-8 09:30
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
人肉查找?哈哈...
2012-5-8 10:52
0
雪    币: 242
活跃值: (468)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
5
推荐和自荐两篇相关的文章 :D
http://bbs.pediy.com/showthread.php?t=142277

http://bbs.pediy.com/showthread.php?t=5476
2012-5-9 00:10
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那个脚本貌似可以用的把
2012-5-9 10:13
0
雪    币: 216
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark 下、、、
2012-5-9 17:26
0
雪    币: 417
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
试一下好不好用
2012-5-9 20:48
0
雪    币: 210
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用了皮肤控件的好像找不到吧
2012-5-9 23:32
0
雪    币: 5163
活跃值: (3402)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果名字改了。搜Click 然后ctrl+L 是不是就可以了?
2012-5-13 14:30
0
游客
登录 | 注册 方可回帖
返回
//