安卓逆向入门教程 – 作者:Yudayhack

起因

面试官问道:你会app渗透吗?

我:我主要渗透app网络部分,其余不太会。

面试官:你会逆向吗?

我:我,我……

动手学习

先找一个ctf的样本。是安卓的样本。一个apk的软件。打开软件后

图片[1]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

哦。。。原来是这样子。试了一下。点击爬一层楼按钮。已爬的楼层加一。应该到了要爬的楼层,就可以出现flag了。

先安装逆向工具。使用了NP工具箱~

打开对应app。

图片[2]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

主要看里边的classes.dex文件。点进去

图片[3]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

进去找到MainActivity的地方

图片[4]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

代码分析

先看看里面的内容大致

图片[5]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

这个文件就是可以修改的文件,语法看不懂没关系。等下就知道了。点击右上角

图片[6]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科转成java,就能看懂了~~~

图片[7]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

关键内容,就是说先生成一个随机值,必须大于5,然后乱七八糟的运算。然后再。。。。

主要看Btn_up事件。每点击一次 数值++,也就是加一。然后判断,如果btn_up的数值大于或等于前面运算的值,查看按钮激活。也就是btn2可用,触发即可显示flag……

反编译

那么我们修改判断条件即可,将大于或等于修改成小于。也就是爬楼小于所需爬楼。

图片[8]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

v3是我们点击出来的数值。v4是随机的。

if-gt的意思是,v3大于v4执行cond_3a

那么我们改成小于if-lt

图片[9]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

保存即可编译。生成tmp文件,修改成apk,安装测试

图片[10]-安卓逆向入门教程 – 作者:Yudayhack-安全小百科

smali语法

  • 条件跳转分支:
  • “if-eq vA, vB, :cond_**” 如果vA等于vB则跳转到:cond_**
  • “if-ne vA, vB, :cond_**” 如果vA不等于vB则跳转到:cond_**
  • “if-lt vA, vB, :cond_**” 如果vA小于vB则跳转到:cond_**
  • “if-ge vA, vB, :cond_**” 如果vA大于等于vB则跳转到:cond_**
  • “if-gt vA, vB, :cond_**” 如果vA大于vB则跳转到:cond_**
  • “if-le vA, vB, :cond_**” 如果vA小于等于vB则跳转到:cond_**
  • “if-eqz vA, :cond_**” 如果vA等于0则跳转到:cond_**
  • “if-nez vA, :cond_**” 如果vA不等于0则跳转到:cond_**
  • “if-ltz vA, :cond_**” 如果vA小于0则跳转到:cond_**
  • “if-gez vA, :cond_**” 如果vA大于等于0则跳转到:cond_**
  • “if-gtz vA, :cond_**” 如果vA大于0则跳转到:cond_**
  • “if-lez vA, :cond_**” 如果vA小于等于0则跳转到:cond_**
  • 2,常量字符修改:特别是中文-> utf8 编码后修改
  • 3,常用修改:
  • add-int/lit16 v0,v0,1111

来源:freebuf.com 2020-11-16 13:18:30 by: Yudayhack

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论