2017湖湘杯安卓题分析实战
本帖最后由 文远张辽 于 2017-11-26 01:32 编辑1. 反编译源代码,点击加密会调用加密函数
2. 加密函数对图片用参数(byte[])的md5加密
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg关键是paramView = encryptData(readUri(this.file), paramView)
3. 看一下这个过程先是md5函数,对参数进行md5消息摘要
之后是加密函数,主要是两个参数进行异或运算!
4. 异或操作是可逆的,只需要用原来的md5再次加密即可,现在确定md5的值对md5的调用有原始参数
其中,参数的引用如下
5.通过该控件所对应的id找到原始字符串参数
查看smali代码,查找public.xml,text的名字是 password_tex
t
查找String.xml
Ok,控件获得的就是这个原始的参数 Password
6.由于apk只能访问图片,所以取消限制
7.反编译,安卓到手机,之后,选择被加密的文件,就得到了原始的图片
附件链接:
链接:http://pan.baidu.com/s/1slLqBiX 密码:uwbq c0d1 发表于 2017-11-26 11:05
这个我当时也看了,但是苦于找不到string.xml,想请问一下您是怎么找到的呢?我是直接解压apk的。。。
我是直接丢到android killer里面的,可以编译好源代码。当确定了要查找的控件的id和name后,搜索整个工程的xml文件,可以找到。另外,如果还记得安卓的文结构的话,string是放在res里面的,也可以直接访问res文件夹,一般在value里面,可以看到string.xml 其实这道题根本就不用知道密码,原程序也不需要把原始的密码写在程序里面,因为我做的时候没有注意到这一点也做出来了。我的方法是通过PNG的文件头前16字节固定这个特征,然后把加密文件的前16字节和正常PNG文件头异或得到key的MD5 byte数组,然后再异或解密文件。 学习学习 学习一下,顺便问下楼主有其他题的wp么? 不明觉厉啊 感谢分享 不错的 学习一下 这个我当时也看了,但是苦于找不到string.xml,想请问一下您是怎么找到的呢?我是直接解压apk的。。。 学习一下 666大神呀