Android部分逆向笔记
Android部分逆向笔记
使用工具:
BlueStacks
ApkIDE
ApkToolkit
APK上上签
Daalvik字节码类型描述符
V void 只能用于返回值类型
Z boolean 变量值只能是 真(true) 或 假(false)
B byte 字节型
S short 短整型
C char 字符型
I int 整数型
J long(64位) 长整型
F float 浮点型
D double(64位) 双精度浮点型
L java类类型 package.name.ObjectName Lpackage/name/ObjectName;
[ 数组类型 [I表示一个整型一维数组,等于java中的int[]。注意多位数数组的维数最大为255个。[[I=int[][] [[[I=int[][][]
3.跳转指令
if-eq 等于则跳转 ==
if-ne 不等于则跳转 !=
if-lt 小于则跳转 <
if-ge 大于或等于则跳转 >=
if-gt 大于则跳转 >
if-le 小于或等于则跳转 <=
goto 无条件跳转
switch 分支跳转
返回0 实现跳转
Pswitch_0
。。。
。。。
。。。
Pswitch_1
。。。
。。。
。。。
Pswitch_2
。。。
。。。
。。。
4.方法调用指令 invoke
5.数据定义指令 const const-string
const-string v1,“youren”
6.操作指令 move
move v1,v2,
=======================================================
.method
invoke-virtual {v1}, Ljava/lang/String;->length()I 取V1长度 12345 =5
move-result v2 将v1长度结果赋值给v2 v2=5
const/4 v3, 0x1 v3=1
goto :cond_1
if-ne v2, v3, :cond_0
:cond_1
...
...
...
...
...
:cond_0
return-void
.end method
============================================================
APK文件结构:
AndroidManifest.xml -配置清单
apktool.yml - 重新打包必须文件
assets - 资源
lib - native 动态库 so
res - 资源库
smali - classes.dex
META-INF -签名
resources.arsc- 语言包
修改apk广告,去除广告
goto 语句 无限制跳转
if-eqz 不等于 if-enz等于修改
搜索.baidu.cn找到地址,删除,编译
逆向修改游戏道具,无需金币
逆向APK
首先apktool反编译找到程序启动点位置
找到购买成功,购买失败,以及删除等代码
然后手工修改购买成功的地方,默认成功为1
0则为不成功,那么就修改为1,编译,签名程序,执行测试
如果失败,就把原的dex修改,然后使用apktoolkit重建,签名,执行测试
就可以了
屏蔽支付失败修改方式
找到购买成功的判断代码,反之,所有结果不成立,则执行相应语句
复制成功的代码,到失败代码处,覆盖,重建DEX,签名程序,执行测试
<< 上一篇
下一篇 >>