三星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(网上找不到资料)

三种方式:

  1. 是将dex转smail, 然后把smali合并

  2. 可以不反编译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代码中决定的, 你修改文件夹的名称, 并不能改变包名

作者:765

出处:https://www.cnblogs.com/linuxxx/p/18323077

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   拓森765  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示