首页
社区
课程
招聘
[原创]使用x64dbg+VS2015 Spy++去除WinRAR5.40(64位)广告弹框
发表于: 2017-7-23 05:34 16139

[原创]使用x64dbg+VS2015 Spy++去除WinRAR5.40(64位)广告弹框

2017-7-23 05:34
16139

   

   

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

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

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


1)偷梁换柱

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

2)NOP掉整个函数内容

x64dbg工具快捷键与OD无异

F9:运行

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

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


【软件名称】: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次才到这里。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/08/03
最新回复 (29)
雪    币: 515
活跃值: (3272)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
2
好文
2017-7-23 07:53
0
雪    币: 12362
活跃值: (5128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢楼主,又学到了如何找  API  了
2017-7-23 09:50
0
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主分享技术贴
2017-7-23 19:37
0
雪    币: 3286
活跃值: (3336)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
我记得是否弹窗广告也是在修改资源里就可以了的~不需要动刀主程序~
2017-7-24 10:33
0
雪    币: 346
活跃值: (1456)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
图文很清晰      感谢分享   
2017-7-24 10:55
0
雪    币: 393
活跃值: (224)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
7
1byte  pass  何必这么费事
2017-7-24 14:43
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
可以看到函数头部地址为:00007FF6780AD078  |  mov  qword  ptr  ss:[rsp+8],rbx
如何知道这里就是函数的头部地址?新手勿怪。
2017-7-24 16:42
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
反汇编的时候不需要勾选那个  剩余字节以nop填充?这里选择和不选择有什么区别,我勾选了新生成文件也可以运行。
2017-7-24 17:17
0
雪    币: 230
活跃值: (137)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习了,x64debug好用吗
2017-7-24 23:21
0
雪    币: 4634
活跃值: (936)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
11




自由地

反汇编的时候不需要勾选那个 剩余字节以nop填充?这里选择和不选择有什么区别,我勾选了新生成文件也可以运行。


  原来你提了两个问题

1、如何看出它是个函数,通过int 3中断指令和传入参数判断的。可以自己写一段调用函数的代码反汇编模式下看。示例程序如:

    #include "stdlib.h"

    int sum(int a,int b,int m,int n)
    {
         return a+b;
    }

    void main()
    {
         int result = sum(1,2,3,4);
         system("pause");
    }

2、如果修改的指令与原指令不相称会引起解析问题程序崩溃,原指令占几个字节,就用几个字节的nop填充。  nop填充不够原指令后面的代码并没有变化,而是原指令的剩余字节就被翻译成新的指令了。就是酱  :)                           


2017-7-24 23:33
0
雪    币: 4634
活跃值: (936)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
12




BinGzL

1byte pass 何必这么费事

嗯,大神你说的有道理,但这么费事是因为要锻炼自己的写作,表达,总结的能力!

2017-7-25 00:41
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
1、找段首可不可以简单理解往上拖代码,找到int3中断下面的就是段首?
2、nop填充,我想问的是你上面教程,在右键把mov  qword  ptr  ss:[rsp+8],rbx修改为ret的时候,你的截图里面汇编窗口中没有勾选“剩余字节以nop填充”,为什么不勾选?而我测试勾选不勾选都可以正常运行程序。
3、x64dbg中显示的是ret,而olldbg中显示的是retn,只是编译器显示的不同吗?
4、x64dbg或者olldbg,汇编修改后,想撤销修改如何操作?比如更改成了ret,我想恢复到原来的值,如何操作。找半天没有找到。我都是关闭程序从新再走一遍。
问题比较初级,多谢了!
2017-7-25 09:45
0
雪    币: 241
活跃值: (1768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
EOF
14
楼主用了山寨版的WinRAR:winrar.com.cn
官网的是没有弹窗的:rarlab.com
2017-7-25 13:26
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
关于上面第二个问题,不知道这样理解对不对,代码遇到ret就返回了。下面的代码修改为什么无所谓。填0不填0都不影响程序。
2017-7-25 19:12
0
雪    币: 4634
活跃值: (936)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
16
自由地 1、找段首可不可以简单理解往上拖代码,找到int3中断下面的就是段首? 2、nop填充,我想问的是你上面教程,在右键把mov qword ptr ss:[rsp+8],rbx修改为ret的时候,你的 ...
1、可以,但是你最好自己动手写一遍,印证自己的想法。
2、第二个问题,你理解的没错。
3、OllyDbg无法调试x64程序,你用OD调试的应该只是32位程序。
4、不知道
2017-7-26 00:15
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
好的,再次感谢!
2017-7-26 00:49
0
雪    币: 96
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
修改主程序还有另外方法也OK
2017-7-28 08:24
0
雪    币: 9
活跃值: (389)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
做成通杀劫持钉子永久升级ko啊
2017-8-1 19:13
0
雪    币: 321
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好文,适合新手。
2017-8-3 17:56
0
雪    币: 97
活跃值: (157)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
太谢谢了,照着做一遍也能学到东西。
2017-8-3 21:48
0
雪    币: 250
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
多谢,来学习了。
2017-8-6 10:28
0
雪    币: 1
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
厉害楼主  感谢分享美文技术  谢谢
2017-8-8 09:35
0
雪    币: 4634
活跃值: (936)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
24
JACKHUA 厉害楼主 感谢分享美文技术 谢谢
不客气,为了连文章都写不出来的菜鸟提供点帮助是应该的。
2017-8-8 13:20
0
雪    币: 97
活跃值: (157)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
自由地 可以看到函数头部地址为:00007FF6780AD078 | mov qword ptr ss:[rsp+8],rbx 如何知道这里就是函数的头部地址?新手勿怪。
试试分析模块,你就知道哪是第一行了。
2017-8-14 22:11
0
游客
登录 | 注册 方可回帖
返回
//