Rev⑥
声明:本篇的作者 Esc1234(CCSR小组重要成员之一)
题目地址:https://pan.baidu.com/s/11FgG1ymTvcCwB_G7VH9KqA
知识点:android逆向
目录
题目解析
- 在夜神模拟器中安装程序,打开后界面如下,app名字为LoopAndLoop,输入密码获得flag;

- 使用jeb打开apk文件,找到核心代码,如下图所示

if语句中的判断条件为MainActivity.this.check(v1, 99) == 1835996258,找到check函数;

- 发现返回结果为chec函数,找到chec函数,发现chec函数为调用的so文件中的函数;


- 在Libraries/armeabi中找到liblhm.so文件并提取出来

- 使用IDA打开该so文件,找到chec函数,反编译结果如下

发现该函数中调用了函数
check1,check2,check3,回到jeb中查看MainActivity发现check1,check2,check3中也调用了chec函数,印证了该app的名字LoopAndLoop,决定调用一下该so文件中的函数。首先搭建NDK环境,网上有教程,此处不在赘述,使用Android Studio新建一个Android项目,在app/src/main/下新建文件夹libs/armeabi/,然后将liblhm.so复制到该路径下,在build.gradle文件中添加如下代码

- MainActivity中添加代码如下
1 | static { |
- 在
onCreate函数中调用chec函数

- 输出结果为:

- 猜测chec函数返回结果为为将
1599503850加上第一个参数的值,那么密码为1835996258-1599503850=236492408,输入app中验证,获得flag如下:

- 当然也可以用爆破获得密码,只不过用时较长。
