带壳调试并定位Delphi注册按钮--XX速查手册 V2006 Build 0125
1.基本情况:
点击各个合同内容,跳出注册框,输入后消失,无提示。
PEID:ASPack 2.1 -> Alexey Solodovnikov [Overlay]
脱壳后PEID:Borland Delphi 4.0 - 5.0,运行无内容,带壳调试。
2.断点:
Spy capture查得注册框的class: TFrmPassw
eXeScope打开脱壳后的程序在RCDATA的TFrmPassw找到:
object btnOK: TAdaFlatButton
Left = 171
Top = 72
Width = 65
Height = 23
Anchors = [akRight, akBottom]
Caption = 'OK'
Color = clBtnFace
OnClick = btnOKClick
ColorDown = clBtnFace
ShowCaption = True
ShowHint = True
ParentShowHint = False
end
Winhex打开脱壳后程序,搜索btnOKClick:
00485369 EC 53 48 00 0A 62 74 6E 4F 4B 43 6C 69 63 6B 11 煊H..btnOKClick
好了,地址:004853EC。
3.调试
OD载入未脱壳程序,运行到OEP(有没有必要没试验过),然后F9运行程序,点击你要看的内容,跳出输入用户名密码的框:用户名:CYTO,密码:87654321
转到OD,下断004853EC:
004853EB 90 nop
004853EC C780 34020000 01000000 mov dword ptr ds:[eax+234],1
004853F6 C3 retn
点击确认后断下,F8一直往下,返回n次,中间还到USER32.dll里逛了下:
00447E6B E8 40F2FBFF call 合同速查.004070B0 ; jmp to user32.DispatchMessageA
00447E70 EB 07 jmp short 合同速查.00447E79
然后继续,路太长了,几乎以为断错了,就在要放弃的时候看到了可爱的用户名:
0048BF2A 8D55 DC lea edx,dword ptr ss:[ebp-24]
0048BF2D A1 E8E44800 mov eax,dword ptr ds:[48E4E8]
0048BF32 8B00 mov eax,dword ptr ds:[eax]
0048BF34 8B80 18030000 mov eax,dword ptr ds:[eax+318]
0048BF3A E8 59DFF9FF call 合同速查.00429E98 ; 用户名
0048BF3F 8B45 DC mov eax,dword ptr ss:[ebp-24]
0048BF42 8D4D E0 lea ecx,dword ptr ss:[ebp-20]
0048BF45 8B15 54E54800 mov edx,dword ptr ds:[48E554] ; 合同速查.0048FC18
0048BF4B 8B12 mov edx,dword ptr ds:[edx]
0048BF4D E8 2E9EFFFF call 合同速查.00485D80 ; 计算核心
0048BF52 8B45 E0 mov eax,dword ptr ss:[ebp-20] ; (ASCII "D9A2572446CA4F")
0048BF55 50 push eax
0048BF56 8D55 D8 lea edx,dword ptr ss:[ebp-28]
0048BF59 A1 E8E44800 mov eax,dword ptr ds:[48E4E8]
0048BF5E 8B00 mov eax,dword ptr ds:[eax]
0048BF60 8B80 1C030000 mov eax,dword ptr ds:[eax+31C]
0048BF66 E8 2DDFF9FF call 合同速查.00429E98
0048BF6B 8B55 D8 mov edx,dword ptr ss:[ebp-28] ; 输入的密码
0048BF6E 58 pop eax ; ASCII "D9A2572446CA4F"
0048BF6F E8 B480F7FF call 合同速查.00404028 ; 比较
0048BF74 75 02 jnz short 合同速查.0048BF78
0048BF76 B3 01 mov bl,1
0048BF78 84DB test bl,bl
0048BF7A 74 52 je short 合同速查.0048BFCE
用户名:CYTO
密码:D9A2572446CA4F
每次重启程序都要输入,郁闷!
4.总结:
本文关键在于断点的寻找:
程序是Delphi的,普通断点断不下,注册确认后无提示,加壳,脱壳后处理OVERLAY也比较麻烦。
还好加的是Aspack壳,定位Delphi注册确认按钮的方法好几种,本破文介绍的这种我认为很方便,对Delphi写的程序屡试不爽。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法