爬楼梯 Write Up Jarvis OJ

运行一下待破解的程序,发现是一个通过生成随机数,然后按Button,要求按到随机数次,比如生成200000,就要点击200000次屏幕。等到达到这个次数以后,就可以点击拿Flag的Button。把APK拖进JEB分析一下:

其中btn2是拿到flag的button,它会调用一个Native函数来生成,目前觉得有两个思路,一是直接进so文件逆向,拿到flag的生成函数,再来判断,二是在Btn函数动动手脚,改改Smali代码的逻辑,然后再重打包。

尝试对so文件逆向,结果发现函数很复杂,于是放弃。接着采用Apktool对apk文件进行反编译,生成smali代码文件,找到MainActivity类中的if跳转代码:


原本是要求点击次数大于等于随机数才可以,我们现在将if-gt改成if-le,然后再利用Apktool重打包,这个时候遇到一个重打包的错误,提示某个资源文件下的PNG文件有问题,直接把这个资源文件删了,继续重打包,成功,然后是坑爹的签名,一直没搞定,用了Apktoo Box,虽然提示成功,但是放在真机里就是装不上,最后于是启动了ARM安卓模拟器(因为有so库),成功运行,点击一次之后拿到flag。


猜你喜欢

转载自blog.csdn.net/wannafly1995/article/details/80964705