--------------------------------------------------------------------------------------------------------------------------------
用ExeinfoPE查看为:Borland C++ 的;运行程序出现要求注册对话框
前天刚看了小马在技术嘉年华的视频学了对付Borland公司的语言的新方法,下面开始:
1、OD载入Flash Screensaver Maker主程序“FlashSCR.exe”,F9运行出现对话(1)框-->F12暂停(2)-->ALT+K打开堆(3)-->在最后一行的“调用来自”(这是我OD上的翻译)列双击来到汇编窗口(4)-->在下一个段首前的返回处F2下段
代码1:
0045EE9B |. E8 CC300000 |call FlashSCR.00461F6C //双击来到这
0045EEA0 |. 8B03 |mov eax,dword ptr ds:[ebx]
·········································································中间省去N行代码
0045EFF0 . 8BE5 mov esp,ebp
0045EFF2 . 5D pop ebp
0045EFF3 . C3 retn //F2在这里下断
0045EFF4 /$ 55 push ebp
2、F9运行(5)-->关闭注册对话框(6)-->断下-->取消断点-->F8单步向下走
代码2:
0040705F . 64:890D 00000>mov dword ptr fs:[0],ecx
00407066 . E9 88020000 jmp FlashSCR.004072F3
0040706B > 833D 24A14C00>cmp dword ptr ds:[0x4CA124],0x0 ; 比较1
00407072 75 33 jnz short FlashSCR.004070A7 ; 跳过注册框1处
00407074 . 8B4D 8C mov ecx,dword ptr ss:[ebp-0x74]
00407077 . B2 01 mov dl,0x1
00407079 . A1 A4F04C00 mov eax,dword ptr ds:[0x4CF0A4]
0040707E . E8 25650000 call FlashSCR.0040D5A8
00407083 . 8B15 008E4D00 mov edx,dword ptr ds:[0x4D8E00] ; FlashSCR._Form3
00407089 . 8902 mov dword ptr ds:[edx],eax
0040708B . 8B45 8C mov eax,dword ptr ss:[ebp-0x74]
0040708E . 83B8 14060000>cmp dword ptr ds:[eax+0x614],0x0 ; 比较2
00407095 75 10 jnz short FlashSCR.004070A7 ; 跳过注册框2处
00407097 . 8B0D 008E4D00 mov ecx,dword ptr ds:[0x4D8E00] ; FlashSCR._Form3
0040709D . 8B01 mov eax,dword ptr ds:[ecx]
0040709F . 8B10 mov edx,dword ptr ds:[eax]
004070A1 . FF92 E8000000 call dword ptr ds:[edx+0xE8] ; 出现注册框
004070A7 > 8B4D 8C mov ecx,dword ptr ss:[ebp-0x74] ; 返回这
004070AA . 83B9 14060000>cmp dword ptr ds:[ecx+0x614],0x0
004070B1 . 74 10 je short FlashSCR.004070C3
3、上面代码中有两处“00407072、00407095”可跳过注册框,看两个跳转前一行的比较怀疑是全局变量“ds:[0x4CA124]、ds:[eax+0x614]”,分别在两个变量上右键-->查找参考-->地址常量(一个测试完了再测试另一个不要同时),把“mov”的全部F2下断,重载程序-->F9运行程序-->断下,可以分别看到给两个怀疑的全局变量的赋值;
代码3:
00406F13 . /EB 08 jmp short FlashSCR.00406F1D
00406F15 |33D2 xor edx,edx ; 修改为 or edx,edx
00406F17 . |8915 24A14C00 mov dword ptr ds:[0x4CA124],edx ; 断下1
00406F1D > \833D 24A14C00>cmp dword ptr ds:[0x4CA124],0x1
代码4:
00406C81 8B55 8C mov edx,dword ptr ss:[ebp-0x74]
00406C84 33C9 xor ecx,ecx ; 修改为 or ecx,ecx
00406C86 898A 14060000 mov dword ptr ds:[edx+0x614],ecx ; 断下2
00406C8C 8B45 8C mov eax,dword ptr ss:[ebp-0x74]
4、在上面代码中可以看到,修改断下的前一行代码来修改两个怀疑的全局变量,经过实践修改“代码3”是我们想要的
5、修改后的程序运行时注册框没有了,但注册按钮还存且点击无反应;
说明:不知道是程序本身的问题还是我没有找到关键点实现真正破解,希望高手帮着看一下;