当提到逆向工程时,什么是“入口点”和“出口点”?

时间:2012-01-01 18:05:31

标签: android reverse-engineering in-app-billing

适用于Android的应用内结算状态的Security and Design文档中的提示:

  

特别是,攻击者会查找已知的入口点退出   在应用程序中指向,因此修改这些内容非常重要   代码的一部分与示例应用程序相同。

由于我将首次使用应用内结算功能,因此在保护基于订阅的应用方面,我非常有兴趣了解这意味着什么:

  1. 究竟是那些“已知的进入/退出点”?
  2. 我需要修改这些部分,以完成任务 攻击者更难?
  3. 鉴于没有任何东西可以保护不受最终的逆向工程影响,是否真的值得去保持这么长的时间 应用/服务?

3 个答案:

答案 0 :(得分:3)

我认为该文档正在讨论Android中用于启动应用程序的标准方法,即activity lifecycle方法(onCreate等)。攻击者很容易找到它们,因为它们没有被混淆(因为框架需要能够找到它们)。

答案 1 :(得分:3)

  

鉴于没有任何东西可以保护不受最终影响   逆向工程,这么长的时间真的值得   保护应用程序/服务?

这确实是一个有趣的问题!要回答这个问题,还必须要问:保护应用程序的预期成本是多少?

如果通过IAP销售的商品会产生供应商/开发商的实际成本(例如,考虑销售MP3,每次下载,供应商可能必须自己支付许可费),这就变得更加重要。这通常表明对手可能获胜,因此他可能愿意投入逆向工程。

然而,我的印象是破解/盗版/ ...应用程序只有一个边缘的“黑市”,理由是不可能通过谷歌市场提供这些裂缝或破解的应用程序,这是只有预装在所有Android手机上的一个。普通用户永远不会看到任何其他应用来源。

因此,如果您希望销售更大量的应用,那么“高级用户”可能会使用1%的欺诈行为。如果您的应用程序有些特别且价格昂贵且您希望仅售出几十或几百个,那么您将更有兴趣保护您的知识产权。

保护的第一步将始终是混淆,这将使您的应用程序的安全性相当(几乎)没有额外的努力在您身边。如果没有强烈的理由(例如,堆栈跟踪在混淆的应用程序中可能变得完全没用),我建议对发布的每个应用进行模糊处理。

答案 2 :(得分:2)

在相当基本的高级别,入口点是应用程序启动的位置,退出点是它结束的位置。这些中的每一个(如上所述)都是不受保护的,并且还倾向于进行一些其他地方没有进行的调用,这使得它们易于查找和更改。