• 标 题:WinRAR 2.71的初级破解 (4千字)
  • 作 者:henryw
  • 时 间:2001-2-16 21:28:04
  • 链 接:http://bbs.pediy.com

WinRAR 2.71的初级破解

前两天装上WinRAR 2.71,为的是解开下载的Revirgin。发现只能用40天,那个NagDialog始终在提醒我注册。

此段时间一直在向hying兄学习脱壳的技术,看看以前破解WinRAR教程似乎不太难,想着来练练吧。

Dasm反汇编了一把,发现和以前教程里写的不同,晕倒......醒来过后只好自己开刀了。

首先发现[466CCC]这个地方很可疑,于是用trw2000下bpm 466CCC试验了一下,看到只要[466CCC]=01,
启动后WinRAR就没有了evaluation copy字样。看看About框,也有了Registered to字样。
(当然,只要用Add Files to archive就会发现NagDialog由弹了出来,然后又成了evaluation copy了。)

既然如此,就看看何时[466CCC]被程序变成了00。检查到了几处,还好不多。

经过分析,发现43C0E8往下的这个Call很有问题,它在检查rarreg.key文件,看来首先对准这里没错。

检查调用它的三个Call,以下是其中一个调用:
* Reference To: USER32.FlashWindow, Ord:0000h
|
:00418373 E81F9B0400              Call 00461E97
:00418378 6A01                    push 00000001
:0041837A E8693D0200              call 0043C0E8
:0041837F A2CC6C4600              mov byte ptr [00466CCC], al <------------ al=00
:00418384 6A00                    push 00000000
:00418386 8B0D24B94600            mov ecx, dword ptr [0046B924]
:0041838C 51                      push ecx

那么如何将al变成01呢?从43C0E8往下走可疑看到

:0043C10C BE25814600              mov esi, 00468125
:0043C111 A5                      movsd
:0043C112 A5                      movsd
:0043C113 A4                      movsb
:0043C114 5F                      pop edi
:0043C115 8D95BCFBFFFF            lea edx, dword ptr [ebp+FFFFFBBC]
:0043C11B 52                      push edx
:0043C11C E8AB030000              call 0043C4CC <--------- 检查rarreg.key是否存在
:0043C121 84C0                    test al, al
:0043C123 7511                    jne 0043C136  <--------- 有的话就跳了
:0043C125 33C0                    xor eax, eax
:0043C127 8B55C8                  mov edx, dword ptr [ebp-38]
:0043C12A 64891500000000          mov dword ptr fs:[00000000], edx
:0043C131 E950030000              jmp 0043C486  <---------- 这里直接就走到函数结束去了。

好吧好吧,既然我从来没有试过SMC,这次来这里试试看吧。
(大虾可不要笑话哦,焉用牛刀哉! 俺学习嘛。)

首先在文件的offset 0xF52找到了一堆的00(应该在哪里找?大虾可否指点?),
赶紧写个patchcode在这里(详细请看toye兄主页的SMC教程),在TRW2000里找到位置为401952。
我的想法是这样的,将43C131处先跳向401952,在这里mov eax, 01, 然后再跳回43C486,就可以了。

说干就干,立刻把43C131处的代码改为jmp 00401952,(E91C58FCFF)
以下就是在401952下汇编的代码
mov eax, 01 (B801000000)  可能改为mov al,01就可以了,不过地方宽裕嘛......
jmp 43C486 (E923AB0300)
注意记下机械码哦。

当然,只改这里是不行的,看看跳NagDialog的地方吧:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004011B2(C)
|
:00401506 833DC0CC460000          cmp dword ptr [0046CCC0], 00000000
:0040150D 7546                    jne 00401555
:0040150F 803D7430460000          cmp byte ptr [00463074], 00  <----- 这里干脆改为mov byte ptr [00463074], 01
:00401516 753D                    jne 00401555               
:00401518 803DCC6C460000          cmp byte ptr [00466CCC], 00
:0040151F 7534                    jne 00401555
:00401521 A1A8F54600              mov eax, dword ptr [0046F5A8]
:00401526 83F828                  cmp eax, 00000028  <-------- 40天
:00401529 7F04                    jg 0040152F <------ 这里显然不能让跳去。
:0040152B 85C0                    test eax, eax
:0040152D 7D26                    jge 00401555

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401529(C)
|
:0040152F C6057430460001          mov byte ptr [00463074], 01
:00401536 6A00                    push 00000000
:00401538 68A8BA4000              push 0040BAA8
:0040153D 8B1524B94600            mov edx, dword ptr [0046B924]
:00401543 52                      push edx

* Possible StringData Ref from Data Obj ->"REMINDER"    <--------- NagDialog。
                                  |
:00401544 68E73B4600              push 00463BE7
:00401549 8B0D20CC4600            mov ecx, dword ptr [0046CC20]
:0040154F 51                      push ecx
======================================================================================
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040EE78(C)
|
:0040EEBC 803DCC6C460000          cmp byte ptr [00466CCC], 00
:0040EEC3 7410                    je 0040EED5
:0040EEC5 803D9096470000          cmp byte ptr [00479690], 00
:0040EECC 7507                    jne 0040EED5
:0040EECE C605CC6C460000          mov byte ptr [00466CCC], 00  <------ 怎么能让它放进00呢,改成mov byte ptr [00466CCC], 01

不足的是About对话框里没有俺的名字。(当然,对WinRAR没怎么用,不知道是否改彻底了。)

  • 标 题:要显示名字只要建立一个rarreg.123(任意扩展名),里面第二三行名字和公司。这个软件关键是几个功能限制,我... (149字)
  • 作 者:傲世男儿
  • 时 间:2001-2-16 23:03:24

标题: 要显示名字只要建立一个rarreg.123(任意扩展名),里面第二三行名字和公司。这个软件关键是几个功能限制,我还没看到一篇功能完全破解的教程。

内容: