android逆向修改small代码弹出flag

相关题目参考攻防世界——ph0en1x-100

拿到这个题,没有任何提示,那我们还是先运行走一遍,看看运行的机制

android逆向修改small代码弹出flag_第1张图片

还是这种熟悉的界面,一看还是输入flag,我们的目的就是破解flag

那我们就直接反汇编一下

找到关键点

android逆向修改small代码弹出flag_第2张图片

发现这是有调用native层的方法,一个是用encrypt加密,一个是在个getflag中,只要两个字符串相同就可以。但是这聊个字符串都会经过相同的加密,因此我们可以直接比较两个字符串。

后面这个是我们输入的字符串,前面一个是系统加密比较的对象,因此我们可以想办法获取用来比较的字符串

getFlag函数的返回值即是flag密文,简单的方法是apktool解包修改smali并回编译。

android逆向修改small代码弹出flag_第3张图片

修改此处Toast显示值为getFlag返回值,如下:

android逆向修改small代码弹出flag_第4张图片

只需注释const-string一句,并将前面获取getFlag值的语句复制至此即可。签名并安装,点击GO按钮Toast即显示Flag密文。

修改后的java代码是这样的,

android逆向修改small代码弹出flag_第5张图片

这样就可以弹出加密后的flag

android逆向修改small代码弹出flag_第6张图片

这是后就可以看看encrypt里面干了什么事情

android逆向修改small代码弹出flag_第7张图片

实际上加密就是把flag每一位减去一位,那我们还原就直接加一位就可以的到我们的flag了

flag{Ar3_y0u_go1nG_70_scarborough_Fair}

你可能感兴趣的:(android逆向)