乐者为王

Do one thing, and do it well.

如何去除WinRAR 3.30的注册提示框

WinRAR在使用到期后,每次打开都会弹出如下图所示的对话框窗口,十分烦人。

winrar-nag

去除Nag窗口常用的几种方法是:

  1. 使用资源修改工具将可执行文件中的Nag窗口的属性改成透明、不可见,可以变相的去除Nag窗口;
  2. 找到创建和显示Nag窗口的代码,跳过即可。显示窗口的常用函数有MessageBox、MessageBoxEx、DialogBoxParam、CreateWindowEx、CreateWindowEx、ShowWindow等;
  3. 找到创建和显示Nag窗口的函数,更改其参数,让其调用失败就可以了;
  4. 在Nag窗口弹出来后,给可以关闭它的BUTTON 送一个WM_COMMAND消息;
  5. 通过静态和动态分析找到注册码。

由于WinRAR未注册版本没有功能限制,用不着去找注册码注册。所以在这里可以用2和3两种方法去掉WinRAR的注册提示窗口。

使用Resource Hacker打开WinRAR.exe,显示Nag窗口的资源如图所示:

winrar-reminder

Nag窗口的ID号是1049,换算成16进制是0x419。用W32Dasm打开WinRAR.exe,打开Dialog References查找Dialog: DialogID_0419,结果没找到。由上图可知Nag窗口的资源名是REMINDER,打开String Data References查找REMINDER字符串试试,果然找到了,双击该项就可以来到相关代码处。

winrar-w32dasm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043FE89(C)
|
:0043FE8F C6055037490001          mov byte ptr [00493750], 01
:0043FE96 6A00                    push 00000000
:0043FE98 68143F4400              push 00443F14
:0043FE9D FF3588EC4A00            push dword ptr [004AEC88]

* Possible StringData Ref from Data Obj ->"REMINDER"
|
:0043FEA3 68C93C4900              push 00493CC9
:0043FEA8 FF3560D04900            push dword ptr [0049D060]

* Reference To: USER32.DialogBoxParamA, Ord:0000h
|
:0043FEAE E837E30400              Call 0048E1EA

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0043FE64(C), :0043FE6D(C), :0043FE76(C), :0043FE7F(C), :0043FE8D(C)
|
:0043FEB3 833DF8104B0000          cmp dword ptr [004B10F8], 00000000
:0043FEBA 752D                    jne 0043FEE9
:0043FEBC 833DF0104B0000          cmp dword ptr [004B10F0], 00000000
:0043FEC3 7524                    jne 0043FEE9
:0043FEC5 833D08114B00FF          cmp dword ptr [004B1108], FFFFFFFF
:0043FECC 741B                    je 0043FEE9
:0043FECE 6A0A                    push 0000000A
:0043FED0 FF3508114B00            push dword ptr [004B1108]

可以看到,REMINDER字符串地址是作为参数传给了DialogBoxParamA函数,而DialogBoxParamA函数正是创建对话框的API函数。这时只需将0043FEA3处的push 00493CC9改为push 0,将一个NULL传入DialogBoxParamA函数,这个函数就会调用失败。当然之后它也就不能正常显示了,就达到了去除的目的。

现在再打开WinRAR,呵呵,大功告成,再也不会有Nag窗口出来Nag我了。

Comments