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

更多
4 Responses Post a comment
  1. 荒野无灯

    链接:http://pan.baidu.com/share/link?shareid=3932211755&uk=539163738 密码:axmb

  2. Yusky

    这软件发布的真快啊~~

    代码看的头晕晕~~·

  3. 荒野无灯

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

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS