使用动态调试器分析WinRAR软件 广告弹窗代码

实验步骤

1. 观察分析目标的程序特征

广告窗口是非模态的,可以与其他窗口交互

2. 使用Spy++查看相关特征参数

3. 动态调试广告弹窗代码,定位启动代码调用点

看到使用的是CreateWindowExW

4. 添加API断点调试,查找广告弹窗代码

先添加API断点

然后断点调试,反复F9
看到与上面spy发现的窗口特征一样,停止

找到RET指令,双击

然后找到了新建窗口的代码

5. 修改并制作补丁

CreateWindowExW需要使用12个参数来执行,会有12个PUSH

我们把第一条PUSH指令改成跳转到第13条指令后面一条指令的地址的JMP指令,可以绕过这个函数的执行

6. 制作补丁,持久化保存PE可执行文件

我们修改的内存里面加载的代码,需要持久化
需要编辑二进制文件

地址转换公式:文件偏移地址=RVA+PointerToRawData-VirtualAddress

RVA:A17BE
文件偏移:A0BBE

可以用x32dbg来看PE文件的sections

可以看到:
PointerToRawData:400
VirtualAddress: 1000

验算:

文件偏移 = RVA + PointerToRawData - VirtualAddress
         = A17BE + 400 - 1000
         = A0BBE

与上面一致
也可以在这里很方便的看到

然后我们打补丁

测试

发现不弹了

实验结果

  1. 广告窗口新建指令地址,即CreateWindowEx指令地址:00A417DC
  2. .text节VirtualAddress地址:00001000
  3. 如果实验中使用HxD等二进制文件编辑器修改,需要打开文件后在文件偏移位置为A0BBE的地方,修改数据为FF 15 A0 B6 AA 00

补充:

思考

条件断点

整半天都不知道这个语法是什么,不弄了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇