【逆向工具】使用x64dbg+spy去除WinRAR5.40(64位)广告弹框

1 学习目标

WinRAR5.40(64位)的弹框广告去除,由于我的系统为x64版本,所以安装了WinRAR(x64)版本。

OD无法调试64位的程序,可以让我熟悉x64dbg进行调试的界面。

其次是这玩意儿真是太蛋疼了,无休止弹广告。

2 破解思路

1)偷梁换柱

修改汇编函数段首为返回值(本次逆向破解采用的方法)

2)NOP掉整个函数内容

3 涉及知识

x64dbg工具快捷键与OD无异

F9:运行

bp CreateWindowExW:在x64dbg底部输入这行命令,对使用CreateWindowExW函数的位置断点。

CreateWindowExW:该函数创建一个层叠式窗口、弹出式窗口或子窗口。
参数:

HWND CreateWindowEx(
    DWORD DdwExStyle,           //窗口的扩展风格
    LPCTSTR lpClassName,        //指向注册类名的指针
    LPCTSTR lpWindowName,       //指向窗口名称的指针
    DWORD dwStyle,              //窗口风格
    int x,                      //窗口的水平位置
    int y,                      //窗口的垂直位置
    int nWidth,                 //窗口的宽度
    int nHeight,                //窗口的高度
    HWND hWndParent,            //父窗口的句柄
    HMENU hMenu,                //菜单的句柄或是子窗口的标识符
    HINSTANCE hInstance,        //应用程序实例的句柄
    LPVOID lpParam              //指向窗口的创建数据
);

4 实现流程

【软件名称】:WinRar
【软件版本】:5.4
【外壳保护】:无
【操作系统】:Windows 10

既然是弹出窗口,首先要知道弹窗窗口的窗口类名,我使用的是VS2015里自带的工具Spy++ x64。


图1 调出Spy++ x64


图2 使用Spy++64查看WinRAR弹出的窗口类名为RarReminder

通过上诉步骤得到WinRAR的类名为RarReminder后,使用x64dbg工具载入WinRAR.exe。在命令的地方使用断点命令【bp CreateWindowExW】,在CreateWindowEx函数断下断点。F9运行到各个断点时观察广告窗口弹出的状态变化。


图3 使用断点命令【bp CreateWindowExW】

F9运行到出现RarReminder字样的地方,x64dbg这款工具还具备查看断点触发的次数的功能,通过【断点】选项卡看到断点共触发了30次才到这里。


图4 断点触发的次数

在堆栈窗口在call指令的地方按回车键返回到用户层函数。


图5 堆栈窗口信息

返回到00007FF6780AD4E8这个地址处,向上看会看到“http://ad.winrar.com.cn/show_40.html?L=7&bl=7&v=540&a=64&src=wrr”这个很明显的广告地址。

汇编函数的代码如下:

00007FF6780AD077 | int3                                    |
00007FF6780AD078 | mov qword ptr ss:[rsp+8],rbx            |
00007FF6780AD07D | mov qword ptr ss:[rsp+10],rbp           |
00007FF6780AD082 | mov qword ptr ss:[rsp+18],rsi           |
00007FF6780AD087 | push rdi                                |
00007FF6780AD088 | push r12                                |
00007FF6780AD08A | push r13                                |
00007FF6780AD08C | push r14                                |
00007FF6780AD08E | push r15                                |
00007FF6780AD090 | mov eax,1080                            |
00007FF6780AD095 | call winrar.7FF6780F8BD0                |
00007FF6780AD09A | sub rsp,rax                             |
00007FF6780AD09D | mov rax,qword ptr ds:[7FF678148200]     |
00007FF6780AD0A4 | xor rax,rsp                             |
00007FF6780AD0A7 | mov qword ptr ss:[rsp+1070],rax         |
00007FF6780AD0AF | xor r15d,r15d                           |
00007FF6780AD0B2 | mov sil,cl                              |
00007FF6780AD0B5 |  cmp byte ptr ds:[7FF67819A204],r15b     |
00007FF6780AD0BC |  je winrar.7FF6780AD0C6                  |
00007FF6780AD0BE |  test dl,dl                              |
00007FF6780AD0C0 |  je winrar.7FF6780AD55D                  |
00007FF6780AD0C6 |  or rbp,FFFFFFFFFFFFFFFF                 |
00007FF6780AD0CA |  mov r12d,1                              |
00007FF6780AD0D0 |  cmp dword ptr ds:[7FF678145EE4],r15d    |
00007FF6780AD0D7 |  je winrar.7FF6780AD127                  |
00007FF6780AD0D9 |  mov rcx,r15                             |
00007FF6780AD0DC |  lea rbx,qword ptr ds:[7FF678145ED0]     | 7FF678145ED0:"8g3#0w1$5r7%2ta"
00007FF6780AD0E3 |  mov r9,r15                              |
00007FF6780AD0E6 |  mov r8d,480                             |
00007FF6780AD0EC |  xor byte ptr ds:[r9+rbx],cl             |
00007FF6780AD0F0 |  movabs rax,AAAAAAAAAAAAAAAB             |
00007FF6780AD0FA |  mul rcx                                 |
00007FF6780AD0FD |  add rcx,3                               |
00007FF6780AD101 |  add r9,r12                              |
00007FF6780AD104 |  shr rdx,1                               | rdx:L"RarReminder"
00007FF6780AD107 |  add rcx,rdx                             | rdx:L"RarReminder"
00007FF6780AD10A |  and ecx,FFFFFF                          |
00007FF6780AD110 |  cmp r9,r8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值