惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Y
Y Combinator Blog
博客园_首页
Martin Fowler
Martin Fowler
博客园 - 司徒正美
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
B
Blog
有赞技术团队
有赞技术团队
A
About on SuperTechFans
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI

Kali's Blog

叮咚~你的新玩具到了! Wireshark太难?浏览器直接分析数据包 WIFI钓鱼一键脚本 轻松获取女神信息 局域网在线扣一键获取思路 在Kali中掌握这些快捷键 你也能成为大黑阔! 用AI分析Wireshark 数据包 一切变得很简单 来啦!来啦!Kali Linux 2026.2来啦! 来啦!来啦!Kali Linux 2026.2来啦! 不会找漏洞 试试Nuclei这款神器 Kali Linux部署Codex 开发学习两不误 浅谈OpenVpn原理及一键部署 超低成本,搭建自己的户外气象基站! Windows Server 2025安装指南 新手必看! 【故障解决】Kali Linux桌面图标丢失和文字乱码 Hermes接BurpSuite 法力无边!(附视频教学) Windows中查看已连接WiFi密码 这些技能你知道吗? 除了Kali Linux 这些渗透系统你知道吗? Hermes 修改MSF特征 轻松逃逸安全软件 这些常见的反编译工具 你用过吗? 社工密码字典生成工具Cupp Kali 配置HexStrike AI 进行安全测试 Kali Linux 如何正确更新系统? 一款跨平台C2工具-Havoc Kali Linux 2026.1都更新了什么? ESP-Claw零代码玩转物联网
【逆向实战】去除软件弹窗
博主: 逍遥子 · 2026-07-08 · via Kali's Blog
在日常工作和学习中,我们会遇到各种恶心的弹窗和广告,关也不了,删也删不掉,如何利用逆向的方式,彻底解决呢?

声明:本文仅为技术研究和逆向工程学习之用。请尊重软件著作权,在合法授权范围内使用软件。本文所述技术手段不应被用于侵犯他人知识产权或获取非法利益。

使用某知名下载软件的的用户经常会遇到一个弹窗提示:

初步分析

搜索弹窗字符串

使用 strings 命令在 主程序.exe 中搜索弹窗中的关键字:

strings 主程序.exe | grep -i "executivefile\|damaged\|the main"

结果什么都找不到。

即使在所有 DLL 文件中搜索编码后的宽字符串(UTF-16 LE),同样一无所获:

strings -e l 主程序.exe | grep -i "executive\|damaged"

这说明 弹窗文本被加密存储了,不是明文。

转向代码分析

既然找不到明文字符串,就转向分析代码。主程序.exe 是一个标准的 32位 PE 可执行文件

objdump -x 主程序.exe | head -40

导入的关键 API:
列出所有导入的 DLL 及其函数。

objdump -p 主程序.exe | awk '/DLL Name:/{dll=$NF} /vma:/{print dll, $NF}'

这些 API 提示了弹窗流程:先获取自身文件名 → 打开自身文件 → 验证完整性 → 若验证失败则弹出 MessageBoxW。

定位加密的弹窗字符串

发现 XOR 加密

遍历所有可能的 XOR 密钥来搜索字符串片段。用 Python 每秒扫描数十万个字节,最终命中:

for key in range(256):  decoded = bytes(b ^ key for b in data)  if b'The main' in decoded:     print(f"Found! XOR key = 0x{key:02x}")

输出

Found! XOR key = 0x3d

弹窗文本使用 单字节 XOR 加密,密钥 = 0x3D(即 ASCII 字符 =)。

解密弹窗文本

加密字符串位于文件偏移 0x3591A4(位于 .data 段),解密后的完整内容:

整个弹窗对话框的字符串拼在一整块加密内存中,共约 9000+ 字节。

字符串引用定位

解密字符串的 VA(虚拟地址)为 0x0075B5A4。在代码段中搜索对这个地址的引用:

python3 -c "# 搜索 push 0x75b5a4 模式target = bytes([0xa4, 0xb5, 0x75, 0x00])pos = data.find(target)print(f'引用位置: file 0x{pos:06x}, VA 0x{pos+0x400000:08x}')"

找到唯一引用点:VA 0x004A86FA,位于方法 CDuplicateDownloadsDlg::virtual_280 内部。

定位弹窗触发调用链

弹窗函数:fcn.004A8720

使用 radare2 分析:

r2 -A 主程序.exe > afl | grep "0x4a87"

函数 fcn.004A8720(大小约 1793 字节)就是构造并显示弹窗的完整函数。

调用链追踪

fcn.004648d0 (检测函数)    │    ├─ 检查某个条件    └─ [条件为真时]        │        ├─ 0x0046499b: lea ecx, [缓冲区]        ├─ 0x004649a1: call fcn.004A8720  ← 🎯 目标!        └─ 弹窗显示

该函数的调用者:

fcn.00482DB0 @ +0x3CBfcn.0048ACB0 @ 0x48B7D4  CDownloaderDlg case.5199 @ +0x780COleListCtrlDropTarget @ 0x504204

关键指令定位

弹窗触发的关键指令位于:

VA:       0x004649A1文件偏移: 0x00063DA1  (.text 段内)原始字节: E8 7A 3D 04 00   →   call fcn.004A8720

补丁方案

方案:NOP 掉弹窗调用

将调用弹窗函数的 5字节 call 指令 替换为 5个 NOP(0x90)
在 010 Editor 中打开源文件,Ctrl+G 跳转打开 IDMan.exe 后,按 Ctrl+G,输入十六进制偏移值063DA1。完成跳转。

光标会直接跳到该字节位置,你会看到: E8 7A 3D 04 00
选中这 5 个字节,手工输入:90 90 90 90 90

完成后,点击保存。
接下来,运行程序,你会发现不再有烦人的弹窗了。更多精彩文章  欢迎关注我们


本文首发于微信公众号,原文链接:【逆向实战】去除软件弹窗


版权属于:逍遥子大表哥

本文链接:https://blog.bbskali.cn/4993.html

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

赞赏作者

可怜可怜吧!正在沿街乞讨~