文远张辽 发表于 2017-11-26 01:23

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

文远张辽 发表于 2017-11-26 17:23

c0d1 发表于 2017-11-26 11:05
这个我当时也看了,但是苦于找不到string.xml,想请问一下您是怎么找到的呢?我是直接解压apk的。。。

我是直接丢到android killer里面的,可以编译好源代码。当确定了要查找的控件的id和name后,搜索整个工程的xml文件,可以找到。另外,如果还记得安卓的文结构的话,string是放在res里面的,也可以直接访问res文件夹,一般在value里面,可以看到string.xml

jasonyao 发表于 2017-11-27 22:59

其实这道题根本就不用知道密码,原程序也不需要把原始的密码写在程序里面,因为我做的时候没有注意到这一点也做出来了。我的方法是通过PNG的文件头前16字节固定这个特征,然后把加密文件的前16字节和正常PNG文件头异或得到key的MD5 byte数组,然后再异或解密文件。

一条金太阳 发表于 2017-11-26 01:49

学习学习

gxkyrftx 发表于 2017-11-26 08:47

学习一下,顺便问下楼主有其他题的wp么?

天空之城2016 发表于 2017-11-26 08:51

不明觉厉啊

li6574833 发表于 2017-11-26 09:14

感谢分享 不错的

坐看云起时00 发表于 2017-11-26 09:24

学习一下

jingnanbei 发表于 2017-11-26 09:52

c0d1 发表于 2017-11-26 11:05

这个我当时也看了,但是苦于找不到string.xml,想请问一下您是怎么找到的呢?我是直接解压apk的。。。

天之哀伤 发表于 2017-11-26 11:08

学习一下

布点丶君 发表于 2017-11-26 11:29

666大神呀
页: [1] 2 3
查看完整版本: 2017湖湘杯安卓题分析实战