安卓逆向入门教程
起因
面试官问道:你会app渗透吗?
我:我主要渗透app网络部分,其余不太会。
面试官:你会逆向吗?
我:我,我……
动手学习
先找一个ctf的样本。是安卓的样本。一个apk的软件。打开软件后
哦。。。原来是这样子。试了一下。点击爬一层楼按钮。已爬的楼层加一。应该到了要爬的楼层,就可以出现flag了。
先安装逆向工具。使用了NP工具箱~
打开对应app。
主要看里边的classes.dex文件。点进去
进去找到MainActivity的地方
代码分析
先看看里面的内容大致
这个文件就是可以修改的文件,语法看不懂没关系。等下就知道了。点击右上角
转成java,就能看懂了~~~
关键内容,就是说先生成一个随机值,必须大于5,然后乱七八糟的运算。然后再。。。。
主要看Btn_up事件。每点击一次 数值++,也就是加一。然后判断,如果btn_up的数值大于或等于前面运算的值,查看按钮激活。也就是btn2可用,触发即可显示flag......
反编译
那么我们修改判断条件即可,将大于或等于修改成小于。也就是爬楼小于所需爬楼。
v3是我们点击出来的数值。v4是随机的。
if-gt的意思是,v3大于v4执行cond_3a
那么我们改成小于if-lt
保存即可编译。生成tmp文件,修改成apk,安装测试
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 客服小蜜蜂(微信:freebee1024)
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录