管理员
|
阅读:6180回复:0
中国菜刀登陆密码清除工具(附脱壳、破解方法)
楼主#
更多
发布于:2013-02-17 17:30
| | | | 今天拿到了一个菜刀,据说里面有很多webshell,打开一看竟然存在密码,遂开始了一段破解之旅。很久没有破解软件了,很简单的东西,翻阅了很多资料才搞定。【破解工具】PEID、OD52pojie专版(用过暗组以前收集的OD不太好用)【脱壳】使用PEID查了一下菜刀的主程序-chopper.exe是经过加壳的--UPX 0.89.6 - 1.02 / 1.05 - 1.24 ->Markus ; Laszlo。UPX的,还是比较简单的。ESP定律法:1. od载入 004AD090 > 60 pushad ;按一下F8 004AD091 BE 00A04700 mov esi,chopper.0047A000 004AD096 8DBE0070F8FF lea edi,dword ptr ds:[esi+0xFFF87000] 2. 右面的寄存器窗口 EAX 00000000 ECX 0012FFB0 EDX 7C92E4F4 ntdll.KiFastSystemCallRet EBX7FFDE000 ESP 0012FFA4//这里右键-数据窗口中跟随 EBP 0012FFF0 3. 来到左下角的数据窗口 0012FFA4 7C930208 ntdll.7C930208//在顶端7C930208的这里右键-断点-硬件访问-WORD 0012FFA8 FFFFFFFF 0012FFAC0012FFF0 0012FFB0 0012FFC4 4. 按一下F9,运行程序 004AD237 8D4424 80 lea eax,dword ptr ss:[esp-0x80] ; F8步进 004AD23B 6A 00push 0x0 004AD23D 39C4 cmp esp,eax 004AD23F ^ 75 FA jnzXchopper.004AD23B 004AD241 83EC 80 sub esp,-0x80; 鼠标点击这里,F4运行到这里 004AD244 - E9 B977FBFF jmp chopper.00464A02 ;再按F8即到达OEP 004AD249 0000 add byte ptr ds:[eax],al 004AD24B 0000 addbyte ptr ds:[eax],al 5.到达OEP。 00464A02 55 push ebp ;这里就是OEP了。右键-用Ollydump脱壳调试进程 00464A03 8BEC mov ebp,esp 00464A05 6AFF push -0x1 00464A07 68 18614700 push chopper.00476118 00464A0C 68D04B4600 push chopper.00464BD0 ; jmp 到 msvcrt._except_handler3 00464A11 64:A100000000 mov eax,dword ptr fs:[0] 00464A17 50 push eax 00464A18 64:89250000000>mov dword ptr fs:[0],esp 再次使用PEID查壳,已经没有了,发现程序采用VC++编写。【破解】破解费了我将近两天时间,走了很多弯路。最后我发现我都要把整个汇编程序读懂了 。。最开始我找了很多下断点的方法,没有成功。经过对比加密和不加密的菜刀程序,发现程序没有区别。而db.mdb文件发生了修改,可以断定,密码是保存在mdb文件中的,而不是保存在程序中的。而打开程序后,还会生成一个cache.tmp文件。在发现目录下没有db.mdb文件时,chopper.exe会创建这个db.mdb文件。而这个文件自身也是有密码的。随后我准备采用API断点的方式,对ReadFile下断点。结果竟然发现了盗号木马。。。 不过后来还是没有找到关键call和关键跳。这时,我绞尽脑汁(最后发现其实我已经在关键call里面转了很多回了,就是没有分析出整个程序的流程,所以没有找到密码)终于想到了一个办法--关键字搜索。最后我好像是F8一步一步跟进的。。。忘记了。上工具吧。 0044A89E 8B0D A0FB4900 mov ecx,dword ptr ds:[0x49FBA0] 0044A8A4 E827220100 call 88.0045cad0 ; 关键call 0044A8A9 84C0 test al,al 0044A8AB 74 07je X88.0044A8B4 0044A8AD 8BCF mov ecx,edi 0044A8AF E8 1C0C0000 call88.0044B4D0 ; 弹出密码框,F7进入,本程序就是在这里修改了两个关键跳实现的。 0044A8B4 381D 91FB4900 cmp byteptr ds:[0x49FB91],bl 0044A8BA 75 7C jnz X88.0044A938
| | | | |
|