欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

任意版本Delphi的按钮事件的快速找法

程序员文章站 2022-07-10 09:54:18
对于delphi较新的版本无法使用DEDE寻找按钮事件,这里我找到了一种比较快捷的方法寻找按钮事件。     用OD载入一个Delphi 2009 写的小程序,...
对于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 不分大小写,
 www.2cto.com
 
//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程序,加壳的程序可能会不行。。。


作者 sunlulu