iOS键记录器实现

时间:2013-04-03 14:07:48

标签: iphone ios jailbreak keylogger cydia-substrate

我想了解如何为iOS实现密钥记录器。如果设备上安装了iKeyMonitor(例如),我怎样才能避免在应用程序中记录密钥?

经过研究,我发现ikeyMonitor在设备上安装了以下文件:

Library/Caches/.keycache
Library/MobileSubstrate/DynamicLibraries/MobileSafe.dylib
Library/MobileSubstrate/DynamicLibraries/MobileSafe.plist
Library/MobileSubstrate/DynamicLibraries/keychain.dylib
Library/MobileSubstrate/DynamicLibraries/keychain.plist

当然需要MobileSubstrate

在keycache中,我可以在Safari中使用URL localhost:8888打开一些HTML文件。

在plists中只有com.apple.springboard过滤器,这意味着MobileSafe.dylib(以及所有挂钩)仅适用于 跳板应用。

即使我不在我的应用程序中使用默认键盘视图来编辑UITextField,键盘记录器仍可正常工作。这意味着Hooks应用于UITextField。

class-dump使用SpringBoard.app后,我找不到任何与UITextField实施相关的方法。在class-dump使用MobileSafe.dylib之后,我找不到任何可替代UITextField的实现(也许是因为它是用C语言编写的),我认为我应该用gdb动态分析MobileSafe.dylib

  1. SpringBoard(在plist com.apple.springboard)应用程序中如何对UITextField类实现产生影响?如果我在dylib中为com.apple.springboard使用UITextField的方法调整,它是否也适用于其他应用程序?

  2. MobileLoaderMobileHooker之间的一般区别是什么?什么时候MobileHooker的更改将应用​​于我的系统?

  3. 如何从UIKit挂钩方法(例如UITextField方法),并更改设备上所有应用的实现?

  4. 您可以建议我使用哪种分析iKeyMonitor的方法?

1 个答案:

答案 0 :(得分:1)

  1. 如果它在过滤器中使用跳板,那么它只会影响跳板,挂钩您使用UIKit作为过滤器的所有应用程序(更多关于3)

  2. 我对这两者的理解是: MobileLoader将您的代码加载到正在运行的应用程序中,当发生这种情况时,将调用构造函数属性“__attribute__((constructor))”的函数。在其中一个构造函数中,调用MobileHooker函数来替换应用程序中预先存在的函数/方法。至于应用更改的时间,因为它们在构造函数中被更改,所以在实际调用它们之前应该更改它们。

  3. 您只需使用com.apple.UIKit过滤器(btw是iKeyMonitor中的keychain.dylib使用的)

  4. class-dump没有显示调整的钩子类和方法,因为它们不是objective-c方法,而是函数... 最好的选择是像ida hex-rays.com/products/ida/index.shtml

  5. 这样的反汇编程序