CalebFenton / simplify

Android virtual machine and deobfuscator
Other
4.41k stars 438 forks source link

Always end up with errors #132

Closed jtyjd closed 4 years ago

jtyjd commented 4 years ago

http://issuecdn.baidupcs.com/issue/netdisk/apk/BaiduNetdisk_10.0.73.apk

I used baksmali to convert it to smali, and then I ran simplify and encountered errors. Is this what is the reason? C:\>java -jar baksmali.jar disassemble BaiduNetdisk_10.0.73.apk -o app

C:\>java -jar simplify.jar app -o classes.dex

erface;' has an earlier definition; ignoring
01:01:52.051 WARN  SmaliFileFactory - Input class 'Ljunit/runner/TestRunListener
;' has an earlier definition; ignoring
[1 / 5837] Processing top level class Lcom/baidu/netdisk/tradeplatform/download/
ui/view/album/DownloadManagerAlbumDetailAdapter$onBindChildrenViewHolder$$inline
d$let$lambda$2;
(1 / 2) Executing top level method: Lcom/baidu/netdisk/tradeplatform/download/ui
/view/album/DownloadManagerAlbumDetailAdapter$onBindChildrenViewHolder$$inlined$
let$lambda$2;-><init>(Lcom/baidu/netdisk/tradeplatform/download/ui/view/album/Do
wnloadManagerAlbumDetailAdapter;ILandroid/support/v7/widget/RecyclerView$ViewHol
der;)V
Exception in thread "main" java.lang.NoClassDefFoundError: com/baidu/netdisk/tra
deplatform/download/ui/view/album/DownloadManagerAlbumDetailAdapter
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
        at java.lang.Class.getConstructor0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at org.cf.smalivm.ObjectInstantiator.newInstance(ObjectInstantiator.java
:24)
        at org.cf.smalivm.opcode.InvokeOp.executeLocalObjectInit(InvokeOp.java:4
33)
        at org.cf.smalivm.opcode.InvokeOp.execute(InvokeOp.java:56)
        at org.cf.smalivm.context.ExecutionNode.execute(ExecutionNode.java:52)
        at org.cf.smalivm.NodeExecutor.execute(NodeExecutor.java:80)
        at org.cf.smalivm.MethodExecutor.execute(MethodExecutor.java:61)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:103)
        at org.cf.smalivm.VirtualMachine.execute(VirtualMachine.java:64)
        at org.cf.simplify.Launcher.executeMethods(Launcher.java:195)
        at org.cf.simplify.Launcher.run(Launcher.java:141)
        at org.cf.simplify.Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: com.baidu.netdisk.tradeplatform.dow
nload.ui.view.album.DownloadManagerAlbumDetailAdapter
        at org.cf.smalivm.dex.SmaliClassLoader.findClass(SmaliClassLoader.java:1
06)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.cf.smalivm.dex.SmaliClassLoader.loadClass(SmaliClassLoader.java:7
5)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 15 more

I also tried Apktool to decode it into smali and merge smali into a folder, then I also encountered errors using simplify.

1111

CalebFenton commented 4 years ago

The error says java.lang.NoClassDefFoundError: com/baidu/netdisk/tra deplatform/download/ui/view/album/DownloadManagerAlbumDetailAdapter

Does this class exist in classes.dex?

This class sounds unimportant for analysis. Have you considered suggestions in the readme, e.g. not running the entire dex file (which is almost certain to fail) and only picking classes and methods you're interested in?

CalebFenton commented 4 years ago

Since it looks like the real issue here is a missing class, I'm going to close the issue. Feel free and continue discussion here.

The class may be from a dynamically loaded dex file. In any case, you'll need to make sure the input dex has all the classes you want to execute. A work around is generally to only deobfuscate the methods you care about.