一个面试APK的简单分析
析android程序的,我是刚学,抱着学知识的心态按照帖子里的,自己走了一遍。1、先试试爆破吧。
用改之理打开程序。
搜 密码错误 转成 unicode,到 Java 源码去看看
https://attach.52pojie.cn/forum/201707/13/001317idx60dkpp3p0zq3v.png
如下图:
https://attach.52pojie.cn/forum/201707/13/001318x5451fmmgm44x4ff.png
说实话,好像没啥看懂。
不过可以知道的是: str1 是我们的输入 ,paramView = str1 ,赋值给 paramView
https://attach.52pojie.cn/forum/201707/13/001318kv60lnsc22s0zts0.png
这个比较很关键,告诉我们str2 = paramView = str1 时就正确了。
所以呢,爆破的话,很简单。
https://attach.52pojie.cn/forum/201707/13/001319pihh7hh4t9d9hmqs.png
补充下Dalvik比较指令:
if-eqzvAA,若 vAA为0 则跳, Java语法为:if(!vAA)
if-nezvAA,若 vAA 不为0 则跳, Java语法为:if(vAA)
if-ltz vAA,若 vAA 小于0 则跳, Java语法为:if(vAA<0)
if-gez vAA,若 vAA 大于等于0 则跳, Java语法为:if(vAA>=0)
if-gtz vAA,若 vAA 大于0 则跳, Java语法为:if(vAA>0)
if-lez vAA,若 vAA 小于0 则跳, Java语法为:if(vAA<=0)
if-nez v5, :cond_1 改成if-eqz v5, :cond_1
https://attach.52pojie.cn/forum/201707/13/001319lbbdh8jtk85vb0hb.png
https://attach.52pojie.cn/forum/201707/13/001320dy3c7i8au8jjt8iw.png
2.我们来找找正确的 key
根据上面的分析,str2 里面就是存放的正确的key
那么,让这个程序输出 str2就行。
看看str2 出现在什么地方。
https://attach.52pojie.cn/forum/201707/13/001320pjlgo0qwq48c5koj.png
就是那个 gagafffafa 这个奇怪的函数里面。
https://attach.52pojie.cn/forum/201707/13/001321bsz94423lzcy3vz4.png
我们让程序输出 v3, 复制下输出 登陆成功xxx(登陆失败xxx)这段 Dalvik 代码。
https://attach.52pojie.cn/forum/201707/13/001321d8db4cwjw8xphfa9.png
改一下,把 v6 改成 v3 ,放到上面那个图的最后。
https://attach.52pojie.cn/forum/201707/13/003128oal544aaoigtjia4.png
运行试一下
https://attach.52pojie.cn/forum/201707/13/000432kffo3e3fjesba34j.png
这。。肯定不对
是错误的。。。为什么呢。。。在来看代码
https://attach.52pojie.cn/forum/201707/13/000453ju218shh2zvgueeq.png
正确的key在v1里面,那就在输出 登陆错误那句话里,把 v6 改成 v1
https://attach.52pojie.cn/forum/201707/13/000454rsxy8zl8sr4nn6r8.png
再运行试试
https://attach.52pojie.cn/forum/201707/13/000454mphc1hlls2p2n1wi.png
https://attach.52pojie.cn/forum/201707/13/000454ss81sss8fobubs8v.png
很明显,,还是不对的。。
为什么呢??我在来看看 v3 和 v1到底比较的什么东西。改成 v3再试
https://attach.52pojie.cn/forum/201707/13/000455xielrebmry3hfh2e.png
运行,输入 123 看看 会输出什么?
https://attach.52pojie.cn/forum/201707/13/000452xd5e9zdpey5re5ry.png
这几个字是不是很熟悉。。对,就是我们最开始添加代码的那个位置,也就是gagafffafa这个函数的输出。。。。
那也就是说 v3 和 v1 永远是不可能相等的了。
----------------------------------------------
页:
[1]