将jar库注入apk应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将jar库注入apk应用相关的知识,希望对你有一定的参考价值。
我想将jar库注入apk文件,以通过smali代码使用它。
这是我所做的:
- 未打包apk
apktool d -f -r app-debug.apk
- 将jar文件复制到反编译项目的
/libs
目录中 将对库的调用添加到创建钩子的主要活动中,如下所示:
invoke-static p0, Lcom/example/injection/Inject;->test(Landroid/content/Context;)V
重新包装apk
apktool b .
- 使用
jarsigner
签名生成的apk - 然后我使用
/dist/
从adb install app-debug.apk
目录安装应用程序>
该应用安装成功,但立即崩溃。在每次崩溃时,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应用的主要内容,如果未能解决你的问题,请参考以下文章