Inpaint 5.4 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

Inpaint 5.4

无壳。一分钟破之。

这个破解tut是我在破5.2版时记录下来的。5.4的大同小异了,我就没有再记录了。

==================================================

提示非法注册码,F12 暂停。 ultra string finder ,搜索所有unicode, 然后copy whole table 粘贴到一txt中(保存后的文件大概有2M多),因为字符串太多,在OD中搜索,会把OD卡死。 然后搜索 Serial key is invalid. 很快就找到了这里:

004793C6 |. E8 B5BDFFFF call Inpaint.00475180 ; 跟进这个call 004793CB |. 83C4 04 add esp, 0x4 004793CE |. 84C0 test al, al 004793D0 |. 0F84 D6000000 je Inpaint.004794AC ; 这里跳走就提示非法注册码了

Inpaint.00475180必须返回 1. 因此我们跟进之。

00475180 /$ 55 push ebp 00475181 |. 8BEC mov ebp, esp 00475183 |. 83EC 08 sub esp, 0x8 00475186 |. 56 push esi 00475187 |. 8B75 08 mov esi, dword ptr ss:[ebp+0x8] ; Inpaint. 0047518A |. 8B06 mov eax, dword ptr ds:[esi] 0047518C |. 8B48 0C mov ecx, dword ptr ds:[eax+0xC] 0047518F |. 0FB751 02 movzx edx, word ptr ds:[ecx+0x2] 00475193 |. 66:8955 FC mov word ptr ss:[ebp-0x4], dx 00475197 |. 8B48 0C mov ecx, dword ptr ds:[eax+0xC] 0047519A |. 0FB711 movzx edx, word ptr ds:[ecx] 0047519D |. 66:8955 FE mov word ptr ss:[ebp-0x2], dx 004751A1 |. 8B40 0C mov eax, dword ptr ds:[eax+0xC] 004751A4 |. 66:8B08 mov cx, word ptr ds:[eax] 004751A7 |. 66:894D 0A mov word ptr ss:[ebp+0xA], cx 004751AB |. 57 push edi ; Inpaint.00598230 004751AC |. 8D4D 0A lea ecx, dword ptr ss:[ebp+0xA] 004751AF |. E8 9C2E5400 call Inpaint.009B8050 ; 第一次调用 004751B4 |. 8D4D FE lea ecx, dword ptr ss:[ebp-0x2] 004751B7 |. 0FBEF8 movsx edi, al 004751BA |. E8 912E5400 call Inpaint.009B8050 ; 第二次调用 004751BF |. 0FBEC8 movsx ecx, al 004751C2 |. 0FAFCF imul ecx, edi ; Inpaint.00598230 004751C5 |. 8BC1 mov eax, ecx 004751C7 |. C1E0 05 shl eax, 0x5 004751CA |. 03C1 add eax, ecx 004751CC |. 99 cdq 004751CD |. B9 19000000 mov ecx, 0x19 004751D2 |. F7F9 idiv ecx 004751D4 |. 8D4D FC lea ecx, dword ptr ss:[ebp-0x4] 004751D7 |. 8D7A 41 lea edi, dword ptr ds:[edx+0x41] 004751DA |. E8 712E5400 call Inpaint.009B8050 ; 这里第三次调用了 004751DF |. 0FBED0 movsx edx, al 004751E2 |. 3BD7 cmp edx, edi ; 比较第三次调用的结果是否等于ss:[edx+0x41],不相同就完了 004751E4 |. 74 08 je short Inpaint.004751EE ; 默认这里不会跳 004751E6 |> 5F pop edi ; kernel32.7C817067 004751E7 32C0 xor al, al ; 然后,这里清0,就没戏了 004751E9 |. 5E pop esi ; kernel32.7C817067 004751EA |. 8BE5 mov esp, ebp 004751EC |. 5D pop ebp ; kernel32.7C817067 004751ED |. C3 retn 004751EE |> 8B06 mov eax, dword ptr ds:[esi] 004751F0 |. 8B48 0C mov ecx, dword ptr ds:[eax+0xC] 004751F3 |. 0FB751 04 movzx edx, word ptr ds:[ecx+0x4] 004751F7 |. 66:8955 FE mov word ptr ss:[ebp-0x2], dx 004751FB |. 8B48 0C mov ecx, dword ptr ds:[eax+0xC] 004751FE |. 0FB711 movzx edx, word ptr ds:[ecx] 00475201 |. 66:8955 FC mov word ptr ss:[ebp-0x4], dx 00475205 |. 8B40 0C mov eax, dword ptr ds:[eax+0xC] ......

我们把 004751E7 32C0 xor al, al 修改为 004751E7 B0 01 mov al, 0x1
让这个函数永远返回 1.

后面调试发现,在程序启动之时,也会调用 Inpaint.00475180 函数。 发现保存时也会调用 Inpaint.00475180 ,若返回0的话,就显示你这是试用版,不能保存。

总结: 让 Inpaint.00475180 返回 1就是OK了。 009B8050 只是在 00475180 内部被调用,并没有在其它地方用来作判断。因此,不用管它。 整个破解,只需要修改两个字节数据。

==================================================

修正下载: 链接: http://pan.baidu.com/share/link?shareid=3823240787&uk=539163738 密码: 1hjm

Tagged in :

All Comments (0)
Gravatar image
No Comments