起因
面试官问道:你会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.com 2020-11-16 13:18:30 by: Yudayhack
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册