本帖最后由 cqr2287 于 2016-8-25 20:41 编辑
前几天接了个单,破解如题软件。客户让我自己找软件,结果一百度就傻眼了,居然有他的百度百科!
这么牛的软件我破解的了么?好歹自己学了4年破解。。。抱着试一试的态度,我便试一试。。。
PEID查都没查,直接载入od。od没提示有壳,那就没壳。
下MessageBoxEx断点,注册断下来
我擦,给我弹广告。。。
[Asm] 纯文本查看 复制代码 005BC13D . 50 push eax
005BC13E . FF15 A4104000 call dword ptr ds:[<&MSVBVM60.#595>] ; msvbvm60.rtcMsgBox
005BC144 . 8D8D 78FFFFFF lea ecx,dword ptr ss:[ebp-0x88]
来到信息框处。。。
往上回溯,找j跳
[Asm] 纯文本查看 复制代码 005BC0AB . C745 FC 10000>mov dword ptr ss:[ebp-0x4],0x10
005BC0B2 . FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaEnd>] ; msvbvm60.__vbaEnd
005BC0B8 . E9 B2000000 jmp MP3转换?005BC16F
005BC0BD > C745 FC 12000>mov dword ptr ss:[ebp-0x4],0x12
005BC0C4 . C745 80 04000>mov dword ptr ss:[ebp-0x80],0x80020004
005BC0CB . C785 78FFFFFF>mov dword ptr ss:[ebp-0x88],0xA
005BC0D5 . C745 90 04000>mov dword ptr ss:[ebp-0x70],0x80020004
005BC0DC . C745 88 0A000>mov dword ptr ss:[ebp-0x78],0xA
005BC0E3 . C785 60FFFFFF>mov dword ptr ss:[ebp-0xA0],MP3转换?005219>; UNICODE "Invaild"
005BC0ED . C785 58FFFFFF>mov dword ptr ss:[ebp-0xA8],0x8
005BC0F7 . 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-0xA8]
005BC0FD . 8D4D 98 lea ecx,dword ptr ss:[ebp-0x68]
005BC100 . FF15 0C124000 call dword ptr ds:[<&MSVBVM60.__vbaVarDu>; msvbvm60.__vbaVarDup
005BC106 . C785 70FFFFFF>mov dword ptr ss:[ebp-0x90],MP3转换?00521F>; UNICODE "注册码错误!"
jmp下面有个跳转抢进来了。追踪
[Asm] 纯文本查看 复制代码 005BBD8B > \C745 FC 0A000>mov dword ptr ss:[ebp-0x4],0xA
005BBD92 . 66:837D CC FF cmp word ptr ss:[ebp-0x34],0xFFFF
005BBD97 . 0F85 20030000 jnz MP3转换?005BC0BD
005BBD9D . C745 FC 0B000>mov dword ptr ss:[ebp-0x4],0xB
一个jnz小跳。咱们不能让他实现,实现jmp就跳不了。而有跳转又跳到这个跳上面,跟踪。。
[Asm] 纯文本查看 复制代码 005BBD4A . C745 FC 06000>mov dword ptr ss:[ebp-0x4],0x6
005BBD51 . 66:C745 CC FF>mov word ptr ss:[ebp-0x34],0xFFFF
005BBD57 . EB 32 jmp short MP3转换?005BBD8B
005BBD59 > C745 FC 09000>mov dword ptr ss:[ebp-0x4],0x9
一个jmp。咱们不能让刚刚那个跳,所以也不能让jmp跳。跟踪下面跳转
[Asm] 纯文本查看 复制代码 005BBD48 . /74 0F je short MP3转换?005BBD59
005BBD4A . |C745 FC 06000>mov dword ptr ss:[ebp-0x4],0x6
005BBD51 . |66:C745 CC FF>mov word ptr ss:[ebp-0x34],0xFFFF
005BBD57 . |EB 32 jmp short MP3转换?005BBD8B
005BBD59 > \C745 FC 09000>mov dword ptr ss:[ebp-0x4],0x9
一个小je,没什么用。。。跟踪上个jnz下跳转,因为如果那个跳转跳了,这个jnz就不跳了,jmp就跳了,je就不跳了,注册就成功了
但是那个je仍然很短,所以没什么用。把之前的jnz跳转nop。
然后爆破就完成了。
下一步追码。。。。
根据爆破时的分析,jnz是关键条。。
jnz的跳不跳,决定程序注册成不成功。跳了就失败,所以我们刚才nop。而这个jnz是谁决定的呢?
[Asm] 纯文本查看 复制代码 005BBD3F . 0FBF8D 20FFFF>movsx ecx,word ptr ss:[ebp-0xE0]
005BBD46 . 85C9 test ecx,ecx
005BBD48 . 74 0F je short MP3转换?005BBD59
005BBD4A . C745 FC 06000>mov dword ptr ss:[ebp-0x4],0x6
005BBD51 . 66:C745 CC FF>mov word ptr ss:[ebp-0x34],0xFFFF
005BBD57 . EB 32 jmp short MP3转换?005BBD8B
005BBD59 > C745 FC 09000>mov dword ptr ss:[ebp-0x4],0x9
005BBD60 . 8D95 00FFFFFF lea edx,dword ptr ss:[ebp-0x100]
也就是说,如果je跳了,jmp就跳不了,就要经过下面的call。如果je不跳,jmp就直接跳到jnz那。
所以网上翻
[Asm] 纯文本查看 复制代码 005BBD36 . FF15 48104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>; msvbvm60.__vbaFreeObjList
005BBD3C . 83C4 0C add esp,0xC
005BBD3F . 0FBF8D 20FFFF>movsx ecx,word ptr ss:[ebp-0xE0]
005BBD46 . 85C9 test ecx,ecx
005BBD48 . 74 0F je short MP3转换?005BBD59
je的跳不跳,是由这个call决定的。在call处下断点,f9运行,注册。
断下了。单步跟踪,但下面的call还是给eax赋值了1
那么说明,这个jnz虽然影响了jmp,但jmp下面还有call决定。
往下跟踪
[Asm] 纯文本查看 复制代码 005BC0AB . C745 FC 10000>mov dword ptr ss:[ebp-0x4],0x10
005BC0B2 . FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaEnd>] ; msvbvm60.__vbaEnd
005BC0B8 . E9 B2000000 jmp MP3转换?005BC16F
005BC0BD > C745 FC 12000>mov dword ptr ss:[ebp-0x4],0x12
005BC0C4 . C745 80 04000>mov dword ptr ss:[ebp-0x80],0x80020004
005BC0CB . C785 78FFFFFF>mov dword ptr ss:[ebp-0x88],0xA
005BC0D5 . C745 90 04000>mov dword ptr ss:[ebp-0x70],0x80020004
005BC0DC . C745 88 0A000>mov dword ptr ss:[ebp-0x78],0xA
005BC0E3 . C785 60FFFFFF>mov dword ptr ss:[ebp-0xA0],MP3转换?005219>; Invaild
005BC0ED . C785 58FFFFFF>mov dword ptr ss:[ebp-0xA8],0x8
005BC0F7 . 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-0xA8]
005BC0FD . 8D4D 98 lea ecx,dword ptr ss:[ebp-0x68]
005BC100 . FF15 0C124000 call dword ptr ds:[<&MSVBVM60.__vbaVarDu>; msvbvm60.__vbaVarDup
005BC106 . C785 70FFFFFF>mov dword ptr ss:[ebp-0x90],MP3转换?00521F>; 注册码错误!
005BC110 . C785 68FFFFFF>mov dword ptr ss:[ebp-0x98],0x8
005BC11A . 8D95 68FFFFFF lea edx,dword ptr ss:[ebp-0x98]
005BC120 . 8D4D A8 lea ecx,dword ptr ss:[ebp-0x58]
005BC123 . FF15 0C124000 call dword ptr ds:[<&MSVBVM60.__vbaVarDu>; msvbvm60.__vbaVarDup
这里是错误。jmp肯定要跳啊,不跳不就完蛋了吗?要让插进来的跳不了
[Asm] 纯文本查看 复制代码 005BBD92 . 66:837D CC FF cmp word ptr ss:[ebp-0x34],0xFFFF
005BBD97 0F85 20030000 jnz MP3转换?005BC0BD
005BBD9D . C745 FC 0B000>mov dword ptr ss:[ebp-0x4],0xB
这个jnz的决定应该在上面
在cmp处下端,f9运行并注册
单步跟踪
ecx寄存器出现可疑字符串
继续跟踪
edx出现假马,真假马对比
提示失败。
分析完毕,这个玩意就是真马
注册
MP3885301308611047
这是我的注册码,只适合本机
ok
算法分析我累了,不想写了。简单写写
固定字符串mp3+机器码计算=注册码
软件下载地址(原版):http://rj.baidu.com/soft/detail/12621.html?ald
写了2小时,呜呜累啊。。。。
给点辛苦费吧!!
注册机没有屌丝通道!!!回个帖cb就有了
注意注意,sound大神纠正了一个错误。。。我本想说利用信息框f12法查找错误提示处,却手贱打成了下信息框断点查找错误提示。。。@Sound ,对不起,谢谢提醒
|