程序员

APK动态调试-FindPass为例

2019-03-31  本文已影响2人  Demo_SMILE

工具:

jeb-linux、adb、雷电模拟器、jadx

示例:

jarvis oj上的FindPass


步骤:

一、用模拟器打开程序,查看其功能

发现,当输入错误的时候就会提示not right

二、用jadx打开findpass.apk

分析程序逻辑

发现我们输入的值保存在fkey上面,ekey保存的是Resource/resource.asrc/res/values/strings.xml文件中的fkey的值(Tr43Fla92Ch4n93),然后读取图片scr.jpg的前1024个字节,然后循环对ekey数组中的值进行加减操作,然后到了关键部分,fkey和进行一系列运算的ekey进行对比,如果相同flag就是flag{feky},既然找到了关键部位,就动态调试找到这个值就OK了(也有很多大佬暴力出奇迹)

三、用jeb-linux打开要调试的apk

按tab切换到伪代码(jeb3版本),找到需要下断点的地方,可以看到,equal比较的是v5和v9,然后tab键切回去,然后按ctrl+b设置断点

四、adb连接模拟器,开启软件调试

模拟器里会出现等待调试的页面

五、点击jeb的调试器->开始,会出现如下图所示页面(这一步在win10上没能实现,就转移到了linux上,有大佬知道的可以交流交流)双击进程里标示为D的进程,就可以调试了

在软件里输入1111的时候,点击keyUP就会断在断点处,这时候查看局部变量v5和v9后,将局部变量

的类型转换成string就能发现flag

上一篇下一篇

猜你喜欢

热点阅读