freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

安卓逆向入门教程
2020-11-16 13:18:30

起因

面试官问道:你会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
# 黑客 # 系统安全 # Android
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录