陕西省网络空间安全技术大赛安卓破解试题分析(一)
本帖最后由 挥汗如雨 于 2017-12-17 12:48 编辑今年的陕西省网络安全大赛一共有5道题,笔者将详细讲一下解题过程及思路。(特别感谢:@东梨子。推荐一下对我帮助很大的simp1er 的博客 http://wsimp1er.com/)
第二题破解及思路:http://www.52pojie.cn/thread-603169-1-1.html
第三题破解及思路:http://www.52pojie.cn/thread-604320-1-1.html(作者是@Enigma_G ,感谢他的付出 )
第四题破解及思路:http://www.52pojie.cn/thread-604822-1-1.html(作者是@Enigma_G ,感谢他的付出 )
第五题破解及思路:http://www.52pojie.cn/thread-605059-1-1.html(作者是@lumou ,感谢她的付出)
==================================================================
第一道题:
然后给你个apk文件:链接: https://pan.baidu.com/s/1jIL6icm 密码: rtjb
打开是这样的:
也就是需要参赛选手破解出来密码,下面直接说思路。
Android kill 打开这个文件,翻译成Java代码进入入口函数
可以明显看到调用的.so文件和判断语句,直接用IDA打开这个.so文件
PS:其实 lib目录下面有两个文件夹
这俩的区别是一个是arm 一个是x86,也就是32位和64位,我一开始用的arm里面的.so文件,但是IDA F5后不太友好,有的语句没有反编译出来,所以建议选择x86里面的,还有我以前用的是吾爱IDA6.6汉化的,经过对比发现吾爱破解工具包2.0里打包的IDA6.8版本F5效果比较好。
IDA里导入humen.so文件
找到这个函数,F5后直接看代码,明显的一段算法+比较,算法大概的分析写上面了,当初写的比较粗心,数组其实是从0开始的,第12号字符其实是第13个,请把里面的“个”看成“号”,抱歉。
直接点开这个t_ptr可以发现是输入的字符串经过加密后是同它比较的
好了,知道算法和最后的字符串,直接反过来算一遍。
原来的加密方式
python 逆推和结果
结果输入进去:
由于楼主的重点在逆向出密码,所以安卓分析讲的不太详细,可以参考@Enigma_G 的帖子http://www.52pojie.cn/thread-603799-1-1.html,IDA变量名称方面讲的也很不错。
第二题破解及思路:http://www.52pojie.cn/thread-603169-1-1.html
第三题破解及思路:http://www.52pojie.cn/thread-604320-1-1.html(作者是@Enigma_G感谢他的帮助 )
第四题破解及思路:http://www.52pojie.cn/thread-604822-1-1.html(作者是@Enigma_G ,感谢他的付出 )
第五题破解及思路:http://www.52pojie.cn/thread-605059-1-1.html(作者是@lumou ,感谢她的付出)
超开心,看了楼主的题目后,根据所学的知识我用了另外一种方法破解,没有研究它的算法。我也讲一下我的解题思路吧。
从这里,我们除了知道调用.so文件还可以知道如果返回是“a”就可以打开WindowActivity,也就是输入密码后的界面。
然后和楼主一样,用IDA打开这个.so文件,找到那个函数,按下空格键之后可以看到这样的界面:
这是一个jl判断跳转的(额……我的理解就只有这点),顺利的话往右边,看到‘a’,不然就是'b'。而且这两个分支除了‘a’和‘b’那里不一样外,其他都一样,所以我想着应该可以只修改这里。
把光标放到aA那里,然后切换到hex-view模式,可以看到:
这就确定了修改的位置。
最后用APK改之理来打开这个apk文件,
用16进制编辑器打开这个so文件,到0DC3h处修改它(把62改成61)
最后重新编译生成apk就可以了。结果图如下:
谢谢楼主!! ,厉害了,还得会Python,还得会看java代码{:301_990:}看不懂 过来看看学习学习, 感谢分享,学习一下, 支持,谢谢 小白来围观学习一下。 thx for share. 我爱小彤 发表于 2017-4-25 17:53
,厉害了,还得会Python,还得会看java代码看不懂
一法通万法通{:1_900:} 学习一下,好好看看 感谢楼主分享!