【发布时间】:2017-08-01 18:12:33
【问题描述】:
为了在 Android 上开发反恶意软件,我需要一个 APK 的 smali 表示。
我正在尝试直接在设备上执行baksmali.jar。我问了工具的作者GitHub: Executing baksmali on an Android device。
我按照帖子中的步骤进行操作 Stack overflow: How to execute the dex file in android with command?
- 我下载的是v2.2b4版本
-
dx --dex --output=classes.dex baksmali.jar我使用了来自android/Sdk/build-tools/25.0.2的dx工具 zip baksmali.zip classes.dex-
adb push baksmali.zip /sdcard/我正在使用 genymotion 模拟器custom phone-4.4.4 API 19 adb shell mkdir /sdcard/dalvik-cacheadb shell ANDROID_DATA=/sdcard dalvikvm -cp /sdcard/baksmali.zip org.jf.baksmali.Main
之后,我收到此错误消息Unable to locate class 'org/jf/baksmali/Main'
没错
Unable to locate class 'org/jf/baksmali/Main'
java.lang.NoClassDefFoundError: org/jf/baksmali/Main
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.jf.baksmali.Main" on path: DexPathList[[zip file "/sdcard/baksmali.zip"],nativeLibraryDirectories=[/system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
... 1 more
Suppressed: java.io.IOException: unable to open DEX file
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:296)
at dalvik.system.DexFile.<init>(DexFile.java:80)
at dalvik.system.DexFile.<init>(DexFile.java:59)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:263)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:230)
at dalvik.system.DexPathList.<init>(DexPathList.java:112)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:38)
at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:116)
at java.lang.ClassLoader.access$000(ClassLoader.java:65)
at java.lang.ClassLoader$SystemClassLoader.<clinit>(ClassLoader.java:81)
at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
... 1 more
我不明白这个错误,类路径是正确的。
我该如何解决这个问题?
提前谢谢你。
【问题讨论】:
-
我从bitbucket下载了
v2.2b4 jar -
尝试直接使用 classes.dex,而不是压缩它。
adb shell ANDROID_DATA=/sdcard dalvikvm -cp /sdcard/classes.dex org.jf.baksmali.Main -
jar 的 V2.1.3 正在运行,而不是
org.jf.baksmali.Main它是org.jf.baksmali.main
标签: android adb dex smali antimalware