将jar库注入apk应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将jar库注入apk应用相关的知识,希望对你有一定的参考价值。

我想将jar库注入apk文件,以通过smali代码使用它。

这是我所做的:

  1. 未打包apk apktool d -f -r app-debug.apk
  2. 将jar文件复制到反编译项目的/libs目录中
  3. 将对库的调用添加到创建钩子的主要活动中,如下所示:

    invoke-static p0, Lcom/example/injection/Inject;->test(Landroid/content/Context;)V
    
  4. 重新包装apk apktool b .

  5. 使用jarsigner签名生成的apk
  6. 然后我使用/dist/adb install app-debug.apk目录安装应用程序>
  7. 该应用安装成功,但立即崩溃。在每次崩溃时,logcat都会输出以下消息:

4-14 00:37:45.397 3016-3162/? I/logserver: extract_appname, forward search, appname=com.example.ben.myapplication
04-14 00:37:45.397 3016-3162/? I/logserver: get_fault_appname, appname=com.example.ben.myapplication
04-14 00:37:45.400 3016-3161/? I/logserver: handle_notify_event, send msg [submit:trigger=0,bugtype=2,modulename=com.example.ben.myapplication,level=1,testtype=NORMAL,path=/data/log/unzip/ALE-L21_ALE-L21C432B584_0000000000_20180414003745_crash,mode=1;]
04-14 00:37:45.688 23691-23691/com.example.ben.myapplication I/Process: Sending signal. PID: 23691 SIG: 9

我在设备上运行此命令,因此我无法真正访问崩溃报告,但这显然是因为未找到com/example/injection/Inject

我之前已经完成了注入,但是没有添加jar,而是将smali类添加到了项目中,但是我想尝试添加jar库。有办法吗?

我想将jar库注入apk文件,以通过smali代码使用它。这是我做的:将apk apktool d -f -r app-debug.apk解包。将jar文件复制到...的/ libs目录中...

答案

libs文件夹用于本机库,不适用于JAR文件。 JAR文件包含可以在桌面JRE中执行的.class文件,但不能在Android上执行,因为Android使用不同的字节码格式。为了在Android上运行JRE字节码,DX编译器用于生成DEX(Dalvik可执行文件)文件。如果要将JAR文件中包含的类注入APK(并且已通过apk工具获得了SMALI IR代码),则必须使用DX从jar中生成dex文件,然后使用baksmali工具来生成smali文件,然后您必须将它们集成到反编译的APK的文件夹结构中。

以上是关于将jar库注入apk应用的主要内容,如果未能解决你的问题,请参考以下文章

如何将特定于构建的配置注入 APK?

apk应用的反编译和源代码的生成

JAVA应用如何打包?

将动态库注入企业应用程序(ipa)

将安卓的Apk程序改屁股为Jar,怎么还可以安装到JAVA里?打不开。

使用 CDI 将 Logger 注入 Ejb