OllyDbg 使用教程 (五)


 

参考

书:《加密与解密》

视频:小甲鱼 解密系列 视频

 

pixtopainbook安装包 下载地址  http://pan.baidu.com/s/191ArG


pixtopainbook 破解

 

pixtopainbook是一个电话簿软件,未注册版本,最多只能添加3个组,每个组最多添加4个人。

 


去除添加人数跟组数限制

 

ollydbg 加载 ,按F9运行。

如果OD暂停,在下面出现“异常 E06D7363 - 使用Shift+F7/F8/F9来忽略程序异常” ,

就到 选项-->调试设置-->选择异常-->在同时忽略以下指定的异常或范围,并且点击添加范围,写入00000000~FFFFFFFF

 

图片1

 

F9运行程序在程序中按Add 添加联系人 直道弹出ERROR窗口

 

图片2

此时在OD按下暂停

 

发现程序暂停在dll,按下ALT+F9 反回到用户,再点击ERROR窗口的OK,就会 反回到用户领空。

 

 

 

004562ED  /$  8B4424 08     mov     eax, dword ptr [esp+8]
004562F1  |.  56            push    esi
004562F2  |.  85C0          test    eax, eax
004562F4  |.  8BF1          mov     esi, ecx
004562F6  |.  75 08         jnz     short 00456300
004562F8  |.  E8 C94B0100   call    0046AEC6
004562FD  |.  8B40 10       mov     eax, dword ptr [eax+10]
00456300  |>  85F6          test    esi, esi
00456302  |.  75 04         jnz     short 00456308
00456304  |.  33C9          xor     ecx, ecx
00456306  |.  EB 03         jmp     short 0045630B
00456308  |>  8B4E 1C       mov     ecx, dword ptr [esi+1C]
0045630B  |>  FF7424 10     push    dword ptr [esp+10]               ; /Style
0045630F  |.  50            push    eax                              ; |Title
00456310  |.  FF7424 10     push    dword ptr [esp+10]               ; |Text
00456314  |.  51            push    ecx                              ; |hOwner
00456315  |.  FF15 04564700 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
0045631B  |.  5E            pop     esi                              ;  020542C0
0045631C  \.  C2 0C00       retn    0C

 

 

 

此时程序停在00456318处,看看前后的代码,这个是调用MeeagBox的函数。

 

按F8让函数返回,可以看到下面的代码

 

 

00412DBE   .  8B8E BC010000 mov     ecx, dword ptr [esi+1BC]
00412DC4   .  8BF8          mov     edi, eax
00412DC6   .  8B04F9        mov     eax, dword ptr [ecx+edi*8]
00412DC9   .  8D2CFD 000000>lea     ebp, dword ptr [edi*8]
00412DD0   .  83F8 04       cmp     eax, 4
00412DD3      7C 1A         jl      short 00412DEF
00412DD5   .  8B4C24 10     mov     ecx, dword ptr [esp+10]
00412DD9   .  6A 10         push    10
00412DDB   .  68 00F74800   push    0048F700                         ;  ASCII "Please register PixtopianBook"
00412DE0   .  68 68FC4800   push    0048FC68                         ;  ASCII "You've reached the limit of 4 entries per group.",LF,LF,"Please register PixtopianBook today!"
00412DE5   .  E8 03350400   call    004562ED
00412DEA   .  E9 DD000000   jmp     00412ECC
00412DEF   >  8D4C24 14     lea     ecx, dword ptr [esp+14]
00412DF3   .  E8 38610100   call    00428F30
00412DF8   .  68 D8784900   push    004978D8
00412DFD   .  8D8C24 C80000>lea     ecx, dword ptr [esp+C8]
00412E04   .  C78424 540900>mov     dword ptr [esp+954], 0
00412E0F   .  E8 5CDF0100   call    00430D70

 

 

此时程序停在00412DEA,可以发现他上面一句call 004562ED即调用了上上个代码。

 

仔细观察call 004562ED 前面 的代码,可以发现 jl short 00412DEF 很关键,如果他跳转了,就不会弹出ERROR窗口 。

把jl short 00412DEF 改成 jmp  short 00412DEF 保存,再运行添加联络人的限制就没了。

 

可以按照上面步骤,破解添加组的限制。

 

修改显示的unregistered

 

对程序标题和About中的UNREGISERED 修改:

直接在CPU窗口的数据面版,按Ctrl+B,输入相应的字符串查找(有ASCII与UNCODE,如果找不到两个都试试)。

找到后直接修改保存。

 

对于程序中间的”This is an unregistered version of PixtooainBook。Please register today“ 修改跟上面的一样。