-
-
[原创]逆向分析Sublime Text的更新机制
-
发表于:
2020-6-16 21:52
4847
-
[原创]逆向分析Sublime Text的更新机制
上一篇文章通过逆向的方式分析了UNREGISTERD显示逻辑和UI结构,这篇开始分析Sublime Text的更新机制。
通过逆向的方法隐藏Sublime Text标题栏的UNREGISTERED
Sublime Text在打开过程中会检测当前是否有新版本,如果有新版本会提示如下截图的弹框:
关于这个更新,可以通过以下菜单配置 update_check 为 false 来禁止版本检查。不过我们这篇文章的目的是通过逆向的方式来梳理Sublime Text的更新机制,通过hook相关的方法来阻止发起版本检测的网络请求,以此实现禁止弹起更新提示框的目的,最终是否开启配置update_check都不会进行更新检查。
在上一篇文章中我们dump了可执行文件的header文件,其中有HttpConnectionDelegate,应该是网络相关操作的delegate,如下,
我们hook这两个方法- (void)connection:(id)arg1 didReceiveData:(id)arg2;和- (void)connection:(id)arg1 didReceiveResponse:(id)arg2;看看更新相关的网络请求:
在终端启动Sublime Text,最终hook方法在- (void)connection:(id)arg1 didReceiveData:(id)arg2;拿到请求记录和结果。控制台看到如下日志:
可以知道是通过GET请求https://www.sublimetext.com/updates/3/stable/updatecheck?version=3207&platform=osx&arch=x64&r=0&now=1592041458&m=VohD,其中header中UA设置为sublime-version-check/3.0,请求结果是一个json结构,可以看出新版链接是https://www.sublimetext.com/3/sublime_text_osx_3211.pak.xz
我们通过ida查字符串“sublime-version-check/3.0”的调用记录Xrefs graph to …:
如上截图的
__Z25blocking_check_for_updateRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES7_P5valuePS5_即是我们要找的更新逻辑,c++filt执行查看它的真身:
ida进入看看,
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)