三星app移植修复(app反编译修改)
工具:
apktool
ADT
命令:
反编译
java -jar apktool.jar d test.apk
重打包
java -jar apktool.jar b test
签名使用ADT

smail语言粗略理解(其实对于修改来说, 大概熟悉就就ok)
类定义
.class public Lcom/example/MyClass;
.super Ljava/lang/Object;
.class 指定类名和修饰符。
.super 指定父类。
字段定义
.field public myField:I
.field 定义字段。
I 表示整数类型(int)。
方法定义
.method public myMethod()V
.locals 1
.prologue
.line 10
return-void
.end method
.method 定义方法,V 表示返回类型为 void。
.locals 声明局部变量数量。
.prologue 和 .line 用于调试和代码注释。
return-void 表示方法结束并返回。
Smali 使用汇编语言风格的指令,以下是一些常见指令:
加载和存储指令
const/4 v0, 0x1 ; 将整数 1 加载到寄存器 v0
算术指令
add-int v0, v1, v2 ; v0 = v1 + v2
方法调用
invoke-virtual {v0}, Lcom/example/MyClass;->myMethod()
实战
三星app移植修复
因为三星app是依赖于自身framework的, 所以移植到其他系统, 会闪退

这个类找不到

增加类

重打包签名后安装测试!

ok, 报其他类错误了, 依葫芦画瓢一一修复即可大功告成!
反编译增加dex(网上找不到资料)
三种方式:
-
是将dex转smail, 然后把smali合并
-
可以不反编译dex文件, 放入dex文件后, 再重打包
apktool反编译命令详解
apktool 的主要命令及其详细解释:
反编译 APK:
apktool d [选项] <文件.apk>
这个命令用于反编译 APK 文件。它会解包 APK,解码资源文件,并将 smali 代码提取出来。
选项:
-f:强制覆盖已存在的输出目录
-o <目录>:指定输出目录
-s:不反编译 dex 文件(即不生成 smali 文件)
-r:不反编译资源文件
-k:保留破解的签名文件
重新打包 APK:
apktool b [选项] <项目文件夹>
这个命令用于将修改后的文件重新打包成 APK。
选项:
-f:强制覆盖已存在的输出文件
-o <文件路径>:指定输出 APK 文件的路径
-d:使用调试模式构建 APK
3.可以在build目录放入dex后重打包

测试通过!
其他遇到的一些实战问题
新增类的方式, 可以解决NoClassDefFound
但是不能覆盖类, 如果类是在android.os中, 那么他会优先加载/system/framework/framework.jar 的dex文件, 所以通过覆盖的方式不会生效
这种情况只能修改调用方把调用的包名改为自己的包名即可
特别注意
如果发现修改包名不生效的问题, 是因为
smali编译成dex的过程,包名是smali代码中决定的, 你修改文件夹的名称, 并不能改变包名

浙公网安备 33010602011771号