【问题标题】:Using strict access to class members and modular code make it harder to reverse engineer APK使用对类成员的严格访问和模块化代码使得逆向工程 APK 变得更加困难
【发布时间】:2013-03-04 15:35:00
【问题描述】:

使用私有方法和私有字段是否会使某些人更难使用常见的反编译器对代码进行逆向工程。

就像这里提到的那些 Decompile .smali files on an APK

或者它没有任何效果,因为这些反编译器允许人们阅读类中的每一行混淆代码。

如何在类和方法上使用 final 以避免类被扩展和方法被覆盖,当我读到反编译器无法生成反编译的工作代码时,它们是否有帮助。或者它是无关紧要的,因为在反编译的类中删除最终属性很简单。

使用许多小的模块化类是否会使人们更难反编译和破解代码,或者使用具有长方法的大类会使阅读混淆代码变得更加困难。

如果这些问题被视为菜鸟问题,我很抱歉。

【问题讨论】:

  • 一句话,不!迷惑是你唯一的朋友。我建议不要担心它并专注于您的用户。就像下一次小行星碰撞一样,您对此无能为力,所以请放松。如果你的应用是下一个愤怒的小鸟,那它肯定会被盗版。如果它像 Play 商店中其他 99.999% 的应用程序(安装量为 0 到几千次)一样,甚至没有人会注意到。

标签: android security coding-style decompiler


【解决方案1】:

或者它没有任何效果,因为这些反编译器允许人们阅读类中的每一行混淆代码。

反编译器反编译所有代码,包括私有方法。

如何在类和方法上使用 final 以避免类被扩展和方法被覆盖,当我读到反编译器无法生成反编译的工作代码时,它们是否有帮助。

更改需要按 Delete 键五次(根据 final)。对于大多数人来说,这不会是一个重大挑战。

使用许多小的模块化类是否会使人们更难反编译和破解代码,或者使用具有长方法的大类会使阅读混淆代码变得更加困难。

不重要,恕我直言。

FWIW,我完全同意 Simon 的评论。

【讨论】:

  • 所以最好使用 NDK 开发用 C++ 或 C+ 编写的预编译本机库,如 [in this response] stackoverflow.com/a/13854795/1527440
  • @pt123:可能不会。如果您出于其他原因(例如,性能)需要使用 C/C++ 来处理特定的焦点问题,请继续。但是您无法使用 C/C++ 编写完整的普通 Android 应用程序,因为您无法从本机代码访问绝大多数 Android。完整的 C/C++ 应用程序大多仅限于游戏。本地代码也可以进行逆向工程,尽管通常比较困难。
【解决方案2】:

不。混淆可以提供帮助,但它真正做的只是为攻击者增加了额外的障碍。不存在通过默默无闻的安全性。 Arxan、Via Forensics 等公司创建了一些昂贵的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 2015-06-11
    • 2013-10-05
    • 2011-09-01
    • 2019-02-07
    • 2014-11-14
    • 2011-03-09
    • 2011-03-12
    相关资源
    最近更新 更多