四哥推荐了 Andrea Corbellini 的椭圆曲线加密算法科普系列文章后,在<椭圆曲线加密算法科普系列的作业>和<椭圆曲线加密算法之Sony惨案模拟题>文章中各出了一些作业题目,我花了些时间进行了解答并回复,这里记录一下。
以及,四哥博客文章<椭圆曲线加密算法之Sony惨案模拟题的答案>亦有对我答题的整理。
更新:2025-03-31
在上篇文章《对一个apk协议的继续分析—libsgmain反混淆与逆向》中的调试 trace 一节,我提到了微软的 TTD,即 Time Travel Debugging ,还放了沈沉舟和krash两位前辈的文章。
什么是 TTD 呢,按官网的介绍来说,TTD 是一款用户级进程的 trace 录制工具,录制完成后可以在调试器中向前向后重放,不需要再重新运行程序就能让你的调试器状态回退,并且还能分享你的 trace 文件给别人,从方方面面帮助你更快更轻松找到 bug。
当时我只是通过各种文章了解到 TTD 的相关介绍,但一直没有什么契机和需求,就还没有实操过,甚至 Windbg 也没怎么摸过。直到沈沉舟前辈前段时间在微博上发了一个关于 Windows UWP Calculator 的 puzzle:
Win10 Calculator是UWP程序,找出UI界面上乘法运算对应的汇编指令所在。要求计算器必须是UWP,且版本不低于11.2210.0.0。非UWP计算器不考虑,更低版本UWP不考虑,可以是Win11上的UWP计算器,只要版本不低于11.2210.0.0。
事情是这样的,两三年前在看雪论坛看到一篇帖子《对一个apk的协议分析》,作者 yezheyu 要分析的签名算法是apk调用阿里安全组件 libsgmainso-5.4.56.so 中安全签名类 SecuritySignature 的 sign 方法,虽然最后没有还原算法,但 yezheyu 把十分详尽的分析过程写在了帖子中,提供了十分多的参考价值。
当时也试着动手分析了下,不过功力水平不够, JNI_OnLoad 函数的混淆都没办法能给还原下,分析了一段时间就给搁置了。几年过去了,现在各方面水平尤其是汇编分析能力相比以前熟练精进了不少,又重新试着分析下,总的来说还算比较顺利地分析出来了,没有卡着或者在哪个环节花了很多的时间。
SCTF 2020 是作为第六届XCTF国际联赛的第三场分站赛,由我们 Syclover 小组的师傅们为本次大赛提供了出题,7 月 4 日上午九点开始,7 月 6 日上午九点结束,时长两天。
两天的比赛战况可以说是动荡起伏,激烈程度也出乎了我们出题师傅的意料,尤其是排行榜前三名一直风云变幻。第一天上午还比较平静,到了中午时候各大强队就开始陆续发力了,后面随着题目地不断放出,比赛排行榜也在一直更迭。
第二天的夜里各大战队都还在肝题目,排名第一的 W&M 战队的师傅最后一天通宵肝出来了两个题目的一血,直到最后一个小时排名第二的 L3H Sec 战队还丢出来了一道 Web 题目的一血,让人在想他们是不是要翻盘了。
关于比赛更详细的情况可以看下 XCTF 社区的这篇文章,《SCTF 2020 W&M高位出圈丨5元代打出题人,冲鸭!》。
文章开始需要提下的就是,在如今看雪论坛的用户一发关于安卓加固的文章动辄就是有关脱壳机、vmp、函数级指令抽取或者各大厂商的加固等技术的情况下,为何我要发一个代码抽取壳的分析,并且还是早期的那种整体抽取、整体还原回去、没有混淆、代码风格十分民风淳朴的那种壳…
原因是我开始尝试复现论坛中一些很优秀的关于 so 层的分析帖子时候,尽管很多帖子都力所能及进行了十分详细的说明,可是有些步骤我复现起来还是觉得不太理解或者有点力不从心,很多时候也是因为一些知识点和操作对大佬来说是比较简单的事情,说起来比较琐碎大佬就给一笔带过略了。
然后自己也尝试着去找一些 App 的 so 文件或者厂商加固的 App 进行分析,但是移动安全毕竟发展了这么多年,很多保护对抗技术都很成熟了,结果就是很多时候分析计划首先卡在了混淆上了…
混淆是件很头疼的事,变量函数名混淆、汇编指令的混淆、ollvm 混淆等这些都很好地阻碍了入门分析者的脚步,很多时候我们只是刚入门的新手,so 层的分析还不太熟练,壳和加固原理也没有那么的清晰,去混淆也没有那么手到擒来,很多文章能浅显的读懂但是没有碰到过一个很好的分析案例来帮我们巩固等等…一言以蔽之,段位太低了。
然后问题就出现了,刚入门想提高,然后去找 App 练手分析,结果一看首先就是各种胡里花哨的混淆甚至连 JNI_Onload 函数都找不到,但是想着逆向分析要有耐心,更是想到了看没几天的四哥 scz 刚发的文章 《有技术追求的人应该去挑战那些崇山峻岭》,里面说到:
“对于某些志存高远的逆向工程爱好者来说,或者对于一些永远充满好奇心的人们来说,破解如果只是拼手速,显得没劲。我要是你们,我就去剁一下Burp企业版。”。
最近又找了个不符合核心价值观的 App 练手,比上篇帖子中的那个还要过分,本来还在犹豫要不要写帖子发出来,后 @r0ysue 巨佬说这是伸张正义打击违法犯罪的事情表彰还来不及,遂仔细整理了下分析思路和经验来发帖子了,给像我一样的入门者提供一个完整的案例来分析练手,以提升巩固学习到的零碎的技术,顺便打击下违法犯罪。
由于这个 App 的每一个界面都十分违规就不展示了,这里让我们脱离 App 的内容本身,把重点放在技术方向上。
当我们看到这里时候,第一直觉是以破解内购的思路去购买 vip,本地修改观影次数改成无限次,但是这样是不行通的,在分析过程中逐步会发现这个 App 的防护工作做的蛮好的,首先是加了壳,然后通信过程中给数据进行了加密,最重要的是这个 App 是在服务器进行了 token 的管理和验证的,和简单内购就可以破解的 App 呈现截然不同的样子,下面让我们通过一点点分析这个 App,来熟悉 App 的一些简单的防护策略和对应的逆向思路。
frida 是一个十分强大的工具,已经学习它有一段时间了,但也只是零零碎碎的练习与使用。最近在对一个 APP 进行分析的过程中,使用 frida 完成了脱壳、hook 破解、模拟抓包、协议分析的操作,可以说是一条龙服务了, 感觉十分有意义,学到了很多,对 frida 的理解和掌握程度也提高了不少,记录下来这次实战分享给各位正在学习 frida 的看雪用户。(在看雪上论坛水了这么久,也该反馈些东西了,逃
frida 入门这里就不多说了,论坛已经有很多优秀的入门帖子了,我也是看着这些帖子一点一点学习的。不过提一下我在安装时候踩的坑,当时折腾很久也安装不上心态被搞得有点爆炸。。