对 Android 应用进行逆向工程时的 Smali 代码与 Java 源代码

Posted

技术标签:

【中文标题】对 Android 应用进行逆向工程时的 Smali 代码与 Java 源代码【英文标题】:Smali code vs Java source code when reverse engineering an android app 【发布时间】:2016-07-09 06:12:18 【问题描述】:

我只是在看android逆向工程教程,发现大部分都是在apk反编译后修改smali代码而不是实际的java源代码,这是有原因的吗?

感谢任何帮助。

谢谢

【问题讨论】:

【参考方案1】:

大多数时候,您从反编译中得到的不是完整/正确/可编译的 Java 源代码。

从字节码推断(Java)源代码只是一个hard 问题。此外,源代码中的某些信息可能只是从编译的表单中丢失,例如局部变量或参数的名称,因此无法通过反编译来恢复它们。

相比之下,将字节码转换为低级 (smali) 指令(反之亦然)是微不足道的。

【讨论】:

以上是关于对 Android 应用进行逆向工程时的 Smali 代码与 Java 源代码的主要内容,如果未能解决你的问题,请参考以下文章

如何对使用 ProGuard 混淆的 Android APK 进行逆向工程/反编译?

[在AppCenter中设置Android应用的安装程序签名时的密码

指定Android Studio编译工程时的源文件编码

Android:逆向工程是如何工作的?

如果可以对源代码进行逆向工程,那么在 Android(或 Java)中加密任何东西有啥意义?

关于android8.1实现多个app升级时的注意事项