Windows系统下对比两个二进制文件的最优方法及定制版ChromeDriver修改内容排查
Windows系统下对比两个二进制文件的最优方法及定制版ChromeDriver修改内容排查
兄弟,我刚好折腾过类似的需求,给你整理几个在Windows上对比这两个ChromeDriver二进制文件的实用方法,帮你揪出那个定制版的改动:
一、二进制层面直接对比(快速找差异位置)
用专门的二进制对比工具就能快速定位两个文件的不同字节,推荐用WinMerge:
- 先把原版和定制版的
chromedriver.exe分别放到两个独立文件夹(比如original_driver和modified_driver),避免混淆 - 打开WinMerge,选择「文件对比」模式,分别选中两个exe文件
- 工具会高亮显示二进制层面的差异区域,但这个方法只能告诉你哪里不一样,没法直接看懂改动的逻辑,适合先快速确认确实有修改
二、反编译对比(核心:看懂代码改动)
如果想搞清楚具体改了什么逻辑,反编译是必走的路,推荐用Ghidra(免费开源)或者IDA Pro(专业级):
- 把两个exe文件分别拖进反编译工具,等待工具完成反汇编、伪代码生成(这个过程可能需要几分钟)
- 重点盯着和Cloudflare绕过相关的模块:
- 检查有没有修改ChromeDriver的默认特征,比如去掉
chromedriver标识、修改navigator.webdriver的返回值 - 查看有没有新增JS注入逻辑,用来模拟真实浏览器的行为
- 对比TLS握手、浏览器指纹相关的函数,看有没有调整参数让指纹更接近真实Chrome
- 检查有没有修改ChromeDriver的默认特征,比如去掉
- 用工具自带的「二进制对比」功能,直接找出两个文件中函数的差异,比如新增的代码段、原有函数的逻辑修改
三、运行时行为对比(验证改动效果)
除了静态分析,还可以通过监控运行时行为来判断改动:
- 分别启动原版和定制版ChromeDriver,打开同一个Cloudflare保护的网站
- 用Process Monitor监控两个进程的系统调用、文件读写、注册表访问,看定制版有没有额外的操作(比如加载自定义脚本、修改浏览器配置)
- 用Wireshark抓包,对比两者发送的HTTP请求头、TLS握手信息,比如JA3指纹、User-Agent的细节差异
针对性提示(针对Cloudflare绕过场景)
因为这个定制版是用来绕Cloudflare的,大概率改了这些地方:
- 移除或修改了ChromeDriver特有的标识,让网站检测不到是自动化工具
- 新增了模拟真实浏览器的指纹伪造逻辑,比如修改canvas指纹、WebGL指纹
- 调整了浏览器启动参数,禁用了一些自动化特征
备注:内容来源于stack exchange,提问作者javier__




