首页
社区
课程
招聘
[原创]WinMPGVideoConvert完全爆破
发表于: 2015-2-7 15:12 4702

[原创]WinMPGVideoConvert完全爆破

2015-2-7 15:12
4702
这是个视频转换软件,没有加壳,但里面有非常多的jmp。破解时要有非常好的耐心。

首先载入od.运行。注册,输入注册码,会有错误提示。
用f12暂停或者bp MessageBoxA可以找到最后弹出提示框的位置,但是倒着往前面找je/jnz是一件非常痛苦的事情。

用插件查找一下字符串,看看有没有可疑的地方。发现regname 和regcode.
在regcode处下断。再点击注册时就会断下来。
用f7跟下去,发现
0040128F   .  50            push eax                            ; /FileName
00401290   .  51            push ecx                            ; |String = "1234134"
00401291   .  52            push edx                            ; |Key
00401292   .  68 64204A00   push WinMPGVi.004A2064              ; |ini
00401297   .  FF15 40D14900 call dword ptr ds:[<&KERNEL32.Write>; \WritePrivateProfileStringA

将注册码写入config.ini文件中。
再往下跟,跟了半天也没有发现突破口。

可以下ini文件断点。看看有没有收获bp GetPrivateProfileStringA
到读取regcode时返回到用户代码
0012D698   00BD5A67   /CALL 到 GetPrivateProfileStringA 来自 ENVC.00BD5A61
0012D69C   00D06D00   |Section = "INI"
0012D6A0   00D06C9E   |Key = "RegCode"

漫长的痛苦开始了,特别多像
00B78834    50              push eax
00B78835    68 79330000     push 3379
00B7883A    68 8B54CA6E     push 6ECA548B
00B7883F    E9 BD1A0000     jmp ENVC.00B7A301
这种几条指令然后一个jmp.

现在寻找可疑点,f8单步,如果有je/jne之类的代码下断记录下来。
并且注意堆栈的变化。
0012D6AC   003E4EF0
0012D6B0   0012D8F4   ASCII "bin117"
0012D6B4   0012D6DF
0012D6B8   0012D9F4
0012D6BC   0012D8F4   ASCII "bin117"
0012D6C0   FFFFFFDF
0012D6C4   00F5A56F   ENVC.00F5A56F
0012D6C8   00B78A44   返回到 ENVC.00B78A44 来自 ENVC.00B7A41A
0012D6CC   0012D6D8   ASCII "bin117"
0012D6D0   004A6318   WinMPGVi.004A6318

有出现好多的用户名,具体也不知道它在做什么,光一个用户名就处理了好久。
像这种
00B7BFDE    84C9            test cl,cl
00B7BFE0  ^ 0F85 66F4FFFF   jnz ENVC.00B7B44C
这种循环读取字符串的就不要记录了。可以在jnz下面一条语句f4.节约些时间。
如果 是
00B78DEE    FFD0            call eax
这种call.就不用进去了,这种call都是调用堆栈中的代码,很简单处理几条指令又返回。
遇到下面这种就f7进去看看。
00B78A3F    E8 D6190000     call ENVC.00B7A41A                  

跟了半天终于出现注册码。从这里开始就得注意了。有可疑的地方就f2下断记录下来。
00B7C0FA    890424          mov dword ptr ss:[esp],eax
00B7C0FD    FF3424          push dword ptr ss:[esp]

0012D6C4   0012D7D8   ASCII "12341234"
0012D6C8   0012D7D8   ASCII "12341234"
0012D6CC   0012D6D8   ASCII "bin117"
0012D6D0   004A6318   WinMPGVi.004A6318

记录可疑点有以下几处。 
00B6EE9B    803A 20         cmp byte ptr ds:[edx],20
00B6EE9E    0F85 E3820000   jnz ENVC.00B77187

00B6F09D    3C 43           cmp al,43
00B6F09F    0F84 69760000   je ENVC.00B7670E

00B749F1    84C0            test al,al
00B749F3    0F85 DB0D0000   jnz ENVC.00B757D4

00B782BE    C705 446CD000 2>mov dword ptr ds:[D06C44],12547B21
00B782C8    32C0            xor al,al
00B782CA    E9 5C3A0000     jmp ENVC.00B7BD2B

0048D322   .  84D2          test dl,dl
0048D324   .  0F95C0        setne al

到最后一处的时候,堆栈中已经完全没有用户名和密码。所以可以确定上面可疑点的某一处就是关键。在上面几处下断点,重新载入。测试。
结果将
00B782C8    32C0            xor al,al 
更改为
00B782C8    B0 01           mov al,1

可以达到暴破的目的。
以上过程并不复杂。但是需要很大的耐心。看到那一堆堆的jmp好几次都有放弃的冲动。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 50
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
以无上功力挽回楼主尊严;
效果:回帖+1;
其实写的不错;
2015-2-7 21:09
0
雪    币: 16436
活跃值: (1695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

谢谢,搞定了。
上传的附件:
2016-6-11 21:58
0
雪    币: 16436
活跃值: (1695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
链接: http://pan.baidu.com/s/1bZpaUU
密码: 7a85
做个备份,以后想起来再不看的情况下回顾下知识点。
2016-6-11 22:01
0
游客
登录 | 注册 方可回帖
返回
//