菜鸟之2015MSC解题思路
2015 移动安全挑战赛 1.22-1.25前言2个多月前,也就是11月中旬去深圳玩了一趟,在同学的带领下,花了2天在腾讯内部感受他们的环境和工作氛围,加班的很多,感觉他也确实很幸苦。回来之后,第一天晚上没睡着,感觉别人都在玩命,而我却在潇洒。于是便买了一本移动安全的书,扎扎实实得学了两个月。尽管挫折很多,多次想放弃,在此就要谢谢我的小伙伴们了,因为之前PC端朋友们的鼓励和移动端朋友们耐心解答我这个新手的问题,我坚持了下来。参加这次比赛在我看来我只是抱着一种学习的心态来看看,多亏有上天眷顾,幸运获奖。下面就分享下比赛中题目的解题思路。第一题:1.Apktools反编译之后定位到MainActivity中的onCreate函数,发现关键跳: 2.往上看发现了:v4 v2 v5 都是Log出来的,打开DDMS。输入123看log: 发现enPassword为123对应的加密字符串,pw其实就是正确的密码了。为了找到pw所对应的字符串作为输入,输入0123456789ABCDEF再次log出来。 对照可以知道,只要输入“581026”对应的就是正确的pw了。第二题:1.Apktools反编译之后可看到: 关键函数就是这个SecurityCheck了,这个函数在so里面。2.去反调试由于这个程序用IDA附加后跑根本跑不起来,所以需要跟一下流程。在Jni_Onload函数下好断点,动态调试。分析后发现nop这个call可以过反调试: 3.在SecurityCheck函数段首F2,输入“123456”触发断点,F8单步分析到这里;R2存放正确的password: R0为输入的password: 然后下面CMP R3,R1 之后就是关键跳了。看到R2前面的提示,很明显了。输入“aiyou,bucuoo”提示密码正确,第二题就是这样了。第三题:1.Apktools反编译,发现内容加载了一个so。应该是早期Ali的一个壳子。2.IDA附加跑程序,发现会退出,又是反调试,那就需要去掉反调试。到了第三题,为了保险起见,直接在ptrace下断点好了,IDA载入libmobisec.so找到ptrace函数的引用: 在2个函数段首下好断点。IDA附加: 断下来首先停在这个函数: 找到段尾的出栈操作的Hex 把第二句替换掉,实际上也就达到了nop掉整个call的效果。但是这个函数nop掉会出错,可能还与其他call有关联,毕竟是一个大call。
接着试一下另外一个函数,F9就会断在第二个函数了如图: 把第二行改成让它直接POP出去如下: 然后程序就能跑起来了,直接F9跑起来,这个时候代码已经全部解密了。在16进制窗口找到: 这是1个odex的头,我们从dex.035开始往后翻,找到一段全为0的区域(因为区块中间都是会有一大段00 00 00,就把前面的dump下来,如果不行,继续往下翻,这样就可以把解密的dex dump出来了。再用baksmali和smali进行转换一下,就可以得到脱壳后的dex原始文件了。用JEB查看:
如图所示,重点就是b类和e类了。然后就是几种思路了:1.把anti-debug代码去掉重打包。2.Hook anti-debug的函数,让它们“闲着”。3.用其他绕过去把脱壳后的dex重打包签名,安装好,准备动态调试。主要方法就是JEB里面静态分析与动态调试smali代码相结合的方式。首先静态分析可以知道一下内容:
因为我比较懒,就用Eclipse来调试Smali了,走了几遍,发现了SendEmptyMessage后面的参数为0才是正确的。所以往下找分析如下:
s5的算法:31x+y=3618x+y=168解出来就是s5然后在Eclipse的变量窗口中找到v_51的值为“7e1p”:所以“s57e1p”就是正确的字符串密码了。在e类的table中一一对应好,所以真正的密码为:“... _____ ____. . ..___ .__.”。
写得比较简洁,过程还是比较长的,最后的算法要绕过层层判断才能深入内部,得到7e1p的值。最后感谢各位一起玩耍的小伙伴了,有你们世界真精彩!剩下的就是做世间最难做的一件事了----“坚持”,再坚持2个月就奖自己一台电脑好了。加油加油,等着好了。Ericky2015.1.26 Hmily 发表于 2015-1-29 16:04
安卓里用log输出日志是个不错的方法,顺便编辑下帖子去掉了一些不能识别的效果代码。
好像没找到不能识别的。。。。晕 kevking 发表于 2015-9-7 18:23
看到楼主写的东西,很有共鸣。大家都在努力,我也不能再懒散下去了,为了那些爱我的和我爱的人,加油!
加油。。。。 我也得好好学习,天天向上 向大牛们学习! 学习了 谢谢楼主! 很牛的 。好好学习 安卓里用log输出日志是个不错的方法,顺便编辑下帖子去掉了一些不能识别的效果代码。 PoJie_小雨 发表于 2015-1-29 17:44
好像没找到不能识别的。。。。晕
正文是从哪复制过来的吧?有一些没事别,我去掉了。 Hmily 发表于 2015-1-29 17:49
正文是从哪复制过来的吧?有一些没事别,我去掉了。
直接从word复制过来的,把图片插入了一下 PoJie_小雨 发表于 2015-1-29 17:50
直接从word复制过来的,把图片插入了一下
恩,可能word里的格式代码discuz无法识别。