Ben*_*Ben 5 java android code-injection apk smali
我想将一个 jar 库注入到一个 apk 文件中,以便从 smali 代码中使用它。
这是我所做的:
apktool d -f -r app-debug.apk/libs反编译项目目录下将调用我的库添加到创建钩子上的主要活动,如下所示:
invoke-static {p0}, Lcom/example/injection/Inject;->test(Landroid/content/Context;)V
Run Code Online (Sandbox Code Playgroud)重新打包apk apktool b .
jarsigner/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
Run Code Online (Sandbox Code Playgroud)
我在设备上运行它,所以我无法真正访问崩溃报告,但这显然是因为com/example/injection/Inject找不到。
我之前做过注入,但我没有添加 jars,而是将 smali 类添加到项目中,但我想尝试添加 jar libs。有没有办法做到这一点?
libs 文件夹用于存放本机库,而不是用于 JAR 文件。JAR 文件包含可以在桌面 JRE 中执行的 .class 文件,但不能在 Android 上执行,因为 Android 使用不同的字节代码格式。为了在Android上运行JRE字节代码,DX编译器用于生成DEX(Dalvik可执行文件)文件。如果您想将 JAR 文件中包含的类注入 APK(并且您已通过 apk-tool 获得了 SMALI IR 代码),则必须使用 DX 从 jar 生成 dex 文件,然后使用 baksmali工具来生成 smali 文件,然后您必须将其集成到反编译 APK 的文件夹结构中。
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |