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

中国菜刀登陆密码清除工具(附脱壳、破解方法)

程序员文章站 2022-08-15 10:07:23
今天拿到了一个菜刀,据说里面有很多webshell,打开一看竟然存在密码,遂开始了一段破解之旅。很久没有破解软件了,很简单的东西,翻阅了很多资料才搞定。 【破解工具】 PEID、OD52p...
今天拿到了一个菜刀,据说里面有很多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 8DBE 0070F8FF lea edi,dword ptr ds:[esi+0xFFF87000]

2. 右面的寄存器窗口

EAX 00000000
ECX 0012FFB0
EDX 7C92E4F4 ntdll.KiFastSystemCallRet
EBX 7FFDE000
ESP 0012FFA4 //这里右键-数据窗口中跟随
EBP 0012FFF0

3. 来到左下角的数据窗口

0012FFA4 7C930208 ntdll.7C930208 //在顶端7C930208的这里右键-断点-硬件访问-WORD
0012FFA8 FFFFFFFF
0012FFAC 0012FFF0
0012FFB0 0012FFC4

4. 按一下F9,运行程序

004AD237 8D4424 80 lea eax,dword ptr ss:[esp-0x80] ; F8步进
004AD23B 6A 00 push 0x0
004AD23D 39C4 cmp esp,eax
004AD23F ^ 75 FA jnz Xchopper.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 add byte ptr ds:[eax],al

5.到达OEP。

00464A02 55 push ebp ; 这里就是OEP了。右键-用Ollydump脱壳调试进程
00464A03 8BEC mov ebp,esp
00464A05 6A FF push -0x1
00464A07 68 18614700 push chopper.00476118
00464A0C 68 D04B4600 push chopper.00464BD0 ; jmp 到 msvcrt._except_handler3
00464A11 64:A1 00000000 mov eax,dword ptr fs:[0]
00464A17 50 push eax
00464A18 64:8925 0000000>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 E8 27220100 call 88.0045CAD0 ; 关键call
0044A8A9 84C0 test al,al
0044A8AB 74 07 je X88.0044A8B4
0044A8AD 8BCF mov ecx,edi
0044A8AF E8 1C0C0000 call 88.0044B4D0 ; 弹出密码框,F7进入,本程序就是在这里修改了两个关键跳实现的。
0044A8B4 381D 91FB4900 cmp byte ptr ds:[0x49FB91],bl
0044A8BA 75 7C jnz X88.0044A938