美文网首页DevSupport程序员奔跑吧,JAVA!
抖音通信协议加密算法逆向日志

抖音通信协议加密算法逆向日志

作者: 秦砖 | 来源:发表于2018-04-22 00:06 被阅读2613次

    花费了整整一个多月时间终于将抖音IOS客户端与服务端通信中的加密算法破解了,这里简要地回溯下整个破解过程。这里只是记录整个破解过程中碰到的难点与关键点,但不会讲解具体算法的细节。对算法的实现有需求的朋友,可以私下里留言。

    算法定位

    使用charles工具抓包,可以在任意链接中发现其都包含有as/mas这样的加密参数,破解目标就是找到这两个参数的生成算法。

    使用ida搜索链接的域名,顺着网络请求的流程往下走,不出意外的话可以看到整个抖音客户端的加解密类IESAntiSpam,并发现网络请求流程中会调用该类的encryptDataWithTimeStamp:parameters:接口。通过动态调试能够发现传入该接口的parameters参数正是网络请求链接中拼接的各个参数。毫无疑问,这个接口就是我们需要突破的目标。

    突破STL库

    encryptDataWithTimeStamp:parameters:内部使用C++加密数据,因而STL库函数的定位成了本人碰到的第一个坎。虽然IDA已经识别出了STL库函数的名称,但看着那又臭又长的函数名称,没有多少C++经验的我完全不能将那些接口与STL map库中的接口一一对应起来,无奈之下只能使用动态调试一点一点地理解其具体作用,最终确定其对应的接口。

    就是这么恶心

    事实证明,与obj-c代码相比,C/C++代码的安全性要高上一个数量级。OC中对字典进行遍历仅仅只是一个接口调用的事,更复杂点的也就涉及到block,但对C++的map进行遍历就完全不一样了,涉及到STL库中map对象的具体数据结构、string对象的数据结构,[]操作符的重定义等,最为要命的是每一个接口定义的名字都又臭又长。

    常用加密算法识别

    在花费的一个月时间时,有三分之二的时间花费在了MD5算法的逆向上,这是完全没必要的。当然这也是成长所必需付出的代价。

    在破解MD5算法的过程中,我也隐约的感觉到这可能是一个比较通用的加密算法,因为时间、工期等各方面的原因没有把这个想法延伸下去。直到整个MD5算法被完全反写出来,有机会回顾整个代码时,才意思到问题,查阅资料发现其与MD5非常类似,最后通过得到验证。

    这是一个非常有用的根据算法特征定位常用算法的帖子,相信其能极大地提高算法逆向的效率。

    在逆向MD5算法的过程中接触到了neon指令集,原来还有这样一块我完全没有意思到其存在的领域。后面有人问性能优化方面的问题,这是很值得吹一吹的点。一个不记得从哪个网站上搞到的PDF文件,对于neon指令的使用很有帮助,无论逆向或者正向。

    花指令的去除

    本次破解碰到了这样一些代码:它不是普通的垃圾代码,而是实际执行的分支代码的拷贝,仅仅只是将使用的寄存器换了下顺序而已。整个函数通过浮点数控制if语句将实际执行分支与伪分支组合在一起,且伪分支的数量是实际分支的数倍,给静态分析制造了非常大的不便。

    结合lldb动态调试最终确认了浮点数控制语句的实际执行情况,将不执行的代码分支屏蔽掉后,函数的流程瞬间流畅清晰起来。

    总结

    其实破解的不是算法,而是其它开发者为代码安全所做的各种伪装。毛主席说“与天斗,其乐无穷,与地半,其乐无穷,与人斗,其乐无穷”,逆向破解中,只有享受与人斗争的快乐,才能克服连续数日毫无进展的沮丧,才能克服对未知代码的恐惧。

    让我们享受快乐!

    相关文章

      网友评论

      • 7b004990a139:工作太过沉闷,每日一场足球赛事开启新生活,喜欢竞彩足球朋友可以加我哦
      • 844b6d82cfa0:大佬,能给我一份吗,万分感谢1113543289@qq.com
      • 4e10676ea37f:已赞,求算法,谢谢大佬 .704507063@qq.com
      • 水荣_eb7e:楼主求一份算法,参考一下逆向app,1099537881@qq.com,万分感激
      • 6f49159e48c8:大佬,求一份算法,借鉴学习下!362849260@qq.com
      • 4d9f172767e6:大佬 ,求一份算法。 195545676@qq.com
      • 780b6265fec2:大佬,求一份算法,借鉴学习下!718844739@qq.com
      • 逆向而为:大佬,求一份算法,借鉴学习下!邮箱:dugeladi@126.com
      • 23c27f61a189:nadersidc@outlook.com 大佬,求一份算法,调试遇到了一些坎,越不过去,可以的话方便借鉴学习下!
      • MontagePa:求大佬给一份算法。564303494@qq.com 顺便问一下,我看网上很多都是需要秘钥的,你的这个也是嘛?
      • 087fb57cd6d7:能给我一份算法代码嘛 as得 183851258@qq.com
      • e1bb47748e02:能给一份算法Java代码吗?谢谢,814506914@qq.com
        e1bb47748e02:@秦砖 好的,谢谢啦
        秦砖:@derSirY 老版算法不在适用,新版本还需要时间才能上线
      • 27e7f0ba715e:学渣跪求算法714433615@qq.com
      • 903261792e4b:能发一份算法吗。谢谢大佬850423470@qq.com
      • jiantao22:楼主精神可嘉,我也是调试到encryptDataWithTimeStamp:parameters: 然后各种坑。大神能发一份算法给我吗:3146194990@qq.com ,谢谢
      • HJaycee:作者也是用五笔的哈
      • 9917d56dd9c0:大神可以分享下算法吗,非常感谢573081351@qq.com
      • 石X3:大佬可以分享下算法吗,感谢~ 742652864@qq.com
      • ce87f6188f33:求算法以赞已打赏951059548@qq.com
      • b358243ee881:已赞,我调试后自己拼的算法老是有问题,求一份算法 让我比较下
      • 小西ios:已赞,大佬 求一份mas as 的算法,谢谢了 1146581312@qq.com
      • a6d410adbbf1:求一份算法vson@vson.top
        秦砖:@平淡无奇_3bc5 已发
      • b40b02a5abca:已赞,希望能得到一份签名算法。。。icesunx528@qq.com
        a6d410adbbf1:能转一份吗?vson@vson.top
      • dd3040f8e798:大佬,跪求一份mas 的算法 谢了 232175854@qq.com
      • 我嘞giaogiao:哈哈,抖音研发瑟瑟发抖:smile:
      • a58f1876cac0:大佬 同求一份mas as 的算法,谢谢了 277640384@qq.com
      • 392a0770153f:已赞,求大佬给一份算法。812701785@qq.com
      • a2cee1b34750:已赞 调试到encryptDataWithTimeStamp:parameters:就看不下去了, 求算法。。。 710442582@qq.com
      • 墨雨MrSong:求算法一份,感谢大神,一直以来都希望能在算法上有提高。913051761@qq.com
      • gyank:已赞,求大佬给一份算法。505216834@qq.com
      • fa423a4a0c83:已赞 大佬 求算法 c1er@qq.com
      • a12d65683f17:已赞 大佬 求算法 jaccborn@gmail.com
      • 夜玉龙:同求一份代码,被这个算法烦了好久了,有劳大佬!!!m13168793059@163.com
      • ab34d6ad1b0f:C++动态调试那段能详细说一下不?
        ab34d6ad1b0f:多谢大佬
        ab34d6ad1b0f:C++调试求个教程/文章分享,算法也拜读下:keghue at gmail dot com
        多谢 ! 多谢 !
      • 6927ec1c6c0e:同求一份代码!因为这算法烦了好久,有劳大佬了!438793957@qq.com
      • 84c3875ce219:正好也是研究到mas as这里的算法卡住了,求大佬打赏一份算法~~~
        neihanshe@gmail.com
        谢谢大佬~
      • 天上下雪不下雨:大佬 同求一份mas的算法,谢谢了 641065424@qq.com
      • eb9601cce12d:代码收到了谢谢大哥。多谢了多谢了。睡觉前看了一眼邮箱才发现,谢谢大佬。加了好友麻烦通过下哈。
        e1bb47748e02:能转发一份吗?谢谢814506914@qq.com
        小西ios:@_尸兄 能转发一下吗?谢谢,1219541190@qq.com
        _尸兄:@十一月的雨_3302 能转发我一下吗?
      • eb9601cce12d:大佬好,看了您的帖子跟着学了一会。明白了不少,喜欢逆向方面的东西,想和您求个算法在回头对照着相应的地方看一下理解下。我的邮箱 569349260@qq.com 好人一生平安.
      • 4f9e28b071c2:大佬~最近也在研究这个app,求算法。特别是ts,as,mas的生成算法~1174447227@qq.com。感激不尽
        秦砖:@Handsome_11bb 已发
      • icetong_k:2792590202@qq.com 大佬赏个算法吧😁
      • DF_Sky:优秀
      • 刘小壮:MD5算法是用彩虹表匹配的吗?这个算法是不可逆算法啊。
        秦砖:@刘小壮 嗯,不可逆,我是说把md5的算法实现用c写了出来
      • 607f58b5c2fa:向大神学习,求算法,感谢,haoshubin@gmail.com
      • cf699b919f1f:大佬,求学习算法,2459840012@qq.com。非常感谢
      • 7e4e6962df0a:大佬牛逼啊,分析了好几天,就是在底层C++上分析进展不大唉。。。求算法,想学习一下,大佬感激不尽 798484209@qq.com
      • 32abbe6f8628:大佬~最近也在研究这个app,求算法。特别是ts,as,mas的生成算法~811373120@qq.com。感激不尽
      • ad338bf26287:向大佬致敬,想学习一下,感谢!965159341@qq.com
      • 四处观察前沿:大神求算法 1328228163@qq.com
      • hello_195a:请问IOS端的加密算法 可以适用于android端吗???
      • c69aa912712a:很棒的文章 已赞 跪求破解详情 多谢lz
        ano.zh.cn@gmail.com
      • 7295cb5b6d70:已赞 求算法 278334207@qq.com,多谢。
      • 渣空格:写的很好 ,受教了
      • 82c9866ba2b2:已赞赏 请大神赐教1347921502@qq.com
      • jok_b8ed:已赞 求算法 791389104@qq.com
      • 23579864b98c:已赞,求算法,谢谢,790136898@qq.com ,谢谢大牛!
      • f77a81f4c046:已赞, 求算法学习, 谢谢. 邮箱 932637228@qq.com
      • 0d00dda9f43d:已赞,求算法,谢谢。邮箱: figo5266@163.com:pray:
      • 41409a58f0a1:向大神学习,能发个算法么:pray:
        已赞,谢谢了。邮箱:medias@qq.com
      • 5c79f5420a23:已点赞, 能发个算法么?betta0801@gmail.com
      • DevilX:厉害了,想爬点视频,逆向不熟没搞出来,求算法,714653891@qq.com,谢谢大神
      • 0xfb:向大神学习,能发个算法么:pray:
        已赞,谢谢了。邮箱:breakios@163.com
      • 8ba857668457:大神,求算法,想爬几个小视频。邮箱1056611094@qq.com.非常感谢!
      • 4d890934b59e:点赞大牛,求算法 lankalanka@126.com
      • 50265bc9a7ed:大神 已赞 求算法 mouendless@163.com
      • dd3040f8e798:大神,已赞,求算法,邮箱232175854@qq.com
      • 3046a964b03c:大神大神,已关注点赞, 求算法
        944946217@qq.com
      • 4603bf2a6aeb:大神已赞,求分享算法,谢谢!
      • 915b74ed4693:已赞,请兄弟发下,谢谢。邮箱:81551413@qq.com
      • zombieEngineer:已赞,求算法
      • c7ba92879f4e:想入门逆向破解 求指导入门
        968bbb53fcd1:@秦砖 请问大神,有那本书籍可以推荐?
        秦砖:@cqcpcqp 买本逆向书籍边看边实践,汇编也要掌握
      • Mr_Victory:求下抖音的算法
      • 5fec7bf3da58:高价求算法 Q470372528 万元
      • peter_puff:已点赞, 求算法 感谢感谢感谢
        873991734@qq.com
      • 0e152b53889b:点赞了 大神 求私信
        23579864b98c:@MQRUN 能把算法转发一份给我学习下吗~,谢谢!790136898@qq.com
        0e152b53889b:@秦砖 2522585840@qq.com 谢谢大神
        秦砖:@MQRUN 邮箱呢
      • b6e54a712a55:求下抖音的算法,已赞赏,已关注,已赞,求私信
      • windy_7620:收到邮件,但是打开看不到呀!
      • 333540abbcc5:已赞 求算法 分析了好久 但是mas还是没弄懂
      • d3c7eba3d684:感觉抓取抖音已经是非常简单的事情了,都在抓抖音爸爸的东西给自己用...,类似这种ptubang.com,还有android app上各种抖音内容组合
      • 繁华如梦_a699:抖音没研究过,楼主写的确实不错。相比而言小火山更容易些,一个指令就可以抓取压缩后没有水印的视频和直播。唯一不爽的是直播抓取后其他网页中的网友不能参与互动
      • c2b72fe5b7f6:已赞,抖音折磨了我一星期了,膜拜大神指点~
      • 403c32db3919:求大大发下抖音的算法,想做个爬虫,已赞赏,已关注,已赞 :joy: ,联系方式已私信
      • 293649fb1bb0:能否求下抖音的算法,想获取下用户的详情数据,谢谢
        9fa645a304f6:已赞 ==
        293649fb1bb0:@秦砖 已赞,已私信
        秦砖:@xyzibu 点赞,私信联系方式

      本文标题:抖音通信协议加密算法逆向日志

      本文链接:https://www.haomeiwen.com/subject/vtkxlftx.html