首页
社区
课程
招聘
[原创]逆向分析Sublime Text的更新机制
发表于: 2020-6-16 21:52 5122

[原创]逆向分析Sublime Text的更新机制

2020-6-16 21:52
5122

上一篇文章通过逆向的方式分析了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://ef7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4#2j5X3I4A6L8h3g2@1k6i4S2@1i4K6u0W2j5$3!0E0i4K6u0r3N6i4m8V1j5i4c8W2M7#2)9J5c8U0y4Q4x3V1k6K6N6r3q4T1L8r3g2Q4x3V1k6#2M7r3c8S2N6r3g2U0K9r3g2U0K9#2)9K6c8Y4k6W2M7Y4y4A6L8$3&6Q4x3@1b7K6x3U0l9%4i4K6t1$3j5h3#2H3i4K6y4n7M7r3I4S2N6r3k6G2M7X3#2Q4x3@1c8G2M7%4S2Q4x3U0k6S2L8i4m8Q4x3@1u0S2M7X3y4Z5i4K6y4p5P5o6j5@1i4K6t1$3j5h3#2H3i4K6y4n7M7W2)9K6c8o6m8Q4x3U0k6S2L8i4m8Q4x3@1u0F1L8%4N6Q4x3@1b7I4y4e0V1J5x3o6b7I4y4o6f1^5i4K6t1$3j5h3#2H3i4K6y4n7L8g2)9K6c8q4k6G2K9p5c8Q4c8f1k6Q4b7V1y4Q4z5p5x3`.其中header中UA设置为sublime-version-check/3.0,请求结果是一个json结构,可以看出新版链接是139K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6N6h3u0D9K9h3#2W2N6r3g2^5N6q4)9J5k6h3y4G2L8g2)9J5c8U0x3`./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进入看看,


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 3
支持
分享
最新回复 (1)
雪    币: 1775
活跃值: (4897)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
2
期待下一篇
2020-6-18 12:30
0
游客
登录 | 注册 方可回帖
返回