正版PB9 的登录总有以下提示界面,
pb9 build 5507版本
每次登录都需要点击OK,才能登录进入程序。总觉得令人讨厌,故想法去掉之。
发现以下窗口信息在pbcn90.dll中,故想办法,屏蔽之。
修改后的pbcn90.dll上传。
也可以用Ultraedit编辑pbcn90.dll,查找E83F010000 用9090909090填充。
修改pbcn90.dll后,提示窗口不再出现。
pbcn90.dll的默认路径:C:\Program Files\Sybase\Shared\PowerBuilder。
详细调试过程:
工具:ResScope、W32Dasm Gold、OllyDbg.v1.10.CHS
1.W32Dasm Gold
反编译pb9.exe
Number of Imported Modules = 4 (decimal)
Import Module 001: PBSYS90.dll
Import Module 002: PBCN90.dll
Import Module 003: KERNEL32.dll
Import Module 004: USER32.dll
+++++++++++++++++++ IMPORT MODULE DETAILS +++++++++++++++
Import Module 001: PBSYS90.dll
Addr:80000160 hint(0160) Name: PB_SysMessageLoop
Addr:8000015E hint(015E) Name: PB_SysInit
Addr:8000032F hint(032F) Name: PB_SysInitReport
Addr:80000162 hint(0162) Name: PB_SysTerminate
Import Module 002: PBCN90.dll
Addr:80000064 hint(0064) Name: InvokeInfoDialog
发现PBSYS90.dll为pb9.exe调用的dll文件。
InvokeInfoDialog为nag窗口关键函数。
查找InvokeInfoDialog,发现
* Reference To: PBCN90.InvokeInfoDialog, Ord:0064h
|
:10001014 E8DF000000 Call 100010F8
:10001019 6A01 push 00000001
:1000101B 8B8424A0000000 mov eax, dword ptr [esp+000000A0]
:10001022 8B8C249C000000 mov ecx, dword ptr [esp+0000009C]
:10001029 8B942494000000 mov edx, dword ptr [esp+00000094]
:10001030 50 push eax
:10001031 51 push ecx
:10001032 53 push ebx
:10001033 52 push edx
在OD中10001014下断点。
2.OD分析pb9.exe
弹出对话框地址;
10001014 E8 DF000000 CALL <JMP.&PBCN90.#100_InvokeInfoDialog>
100010F8=<JMP.&PBCN90.#100_InvokeInfoDialog>
DS:[003E2040]=77D288E1 (USER32.DialogBoxParamA)
F8后出现nag窗口。故CALL <JMP.&PBCN90.#100_InvokeInfoDialog>为关键。
此处修改为nop,在OD中模拟退出程序出错。继续debug。
2.pbcn90.dll领空分析;
BCN90.InvokeInfoDialog
重新进入程序,F7进入CALL <JMP.&PBCN90.#100_InvokeInfoDialog>
发现以下有三个CALL。
003E109F 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]
003E10A3 E8 68010000 CALL PBCN90.003E1210
003E10A8 8D4C24 00 LEA ECX,DWORD PTR SS:[ESP]
003E10AC E8 3F010000 CALL PBCN90.003E11F0
003E10B1 8D4C24 00 LEA ECX,DWORD PTR SS:[ESP]
003E10B5 E8 96010000 CALL PBCN90.003E1250
003E10BA 83C4 18 ADD ESP,18
出现对话框处为;003E10AC E8 3F010000 CALL PBCN90.003E11F0
E8 3F010000 用nop填充。用ULTRA EDIT 查找E8 3F,替换连续的5个字节为90。搞定。
也可以继续跟进CALL PBCN90.003E11F0,F7进入,F8步进到
003E1200 8B41 04 MOV EAX,DWORD PTR DS:[ECX+4]
003E1203 52 PUSH EDX
003E1204 50 PUSH EAX
003E1205 FF15 40203E00 CALL DWORD PTR DS:[<&USER32.DialogBoxParamA>] ; USER32.DialogBoxParamA
003E120B C3 RETN
到003E1205 FF15 40203E00 CALL DWORD PTR DS:[<&USER32.DialogBoxParamA>]处,出现NAG
用nop填充失败。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)