逆向语言与地区遇到的问题

通过cycript 发现ISInternationalLanguageSetupController,但是在framework,privateFramework都没发现该头文件,请问如何导出这个头文件?,通过_methodDescription,发现一些方法,hook打印发现并未调用.感觉这种逆向和一般的逆向app不一样,大神能解释下?

可能是在某一个lazy load的bundle里,grep一下看看吧

_methodDescription拿到函数地址,查询是属于哪个模块的就好了

查询是属于哪个模块?,这个有点不明白.通过_methodDescription我能找到setLanguage:specifier:这个方法,然后hook打印,发现并未调用

_methodDescription拿到运行时函数地址,再用dladdr(),Dl_info里的dli_fname

直接拿imp就好了为什么要methoddesc

Xift:~ root# grep -r ISInternationalLanguageSetupController /System/Library

grep: /System/Library/Frameworks/AVFoundation.framework/libAVFAudio.dylib: No such file or directory

grep: /System/Library/Frameworks/AddressBook.framework/AddressBookLegacy: No such file or directory

grep: /System/Library/Frameworks/IOKit.framework/IOKit: No such file or directory

grep: /System/Library/Frameworks/System.framework/System: No such file or directory

grep: /System/Library/Frameworks/System.framework/Versions/Current: No such file or directory

Binary file /System/Library/PreferenceBundles/InternationalSettings.bundle/InternationalSettings matches

grep: /System/Library/PrivateFrameworks/AddressBookLegacy.framework/AddressBookLegacy: No such file or directory

grep: /System/Library/PrivateFrameworks/LocationBundles/MDM.framework: No such file or directory

然后导出 /System/Library/PreferenceBundles/InternationalSettings.bundle/InternationalSettings可执行文件的头文件,发现还是没有ISInternationalLanguageSetupController.h这个头文件.
疑问:这个头文件还可能躲在其它地方?,还有个奇怪的地方也顺便问问,通过lldb发现调用了handleAlertAction这个方法,但是在tweak里面hook打印却什么也没有.

简单看了下,应该在/System/Library/PreferenceBundles/InternationalSettings.bundle/InternationalSettings这个bundle里面

我class-dump InternationalSettings 发现没有


这个类肯定在这里面,至于classdump导不出来,估计是符号或类结构进行了特殊处理

IDA64 我这没😱

ida中也有,只是方法识别那里有点问题。下面两图是[InternationalSettingsController viewWillAppear:]对应的代码,可以看出不管ida还是hopper都不能解析出来符号。不过hopper这里解析出来了是一个函数。针对这个文件来说,用hopper会更好一点。

至于原因,在我理解来看,一般来说ida比hopper识别更加完整,但同样由于此文件缺少一些必须得信息(类结构变化或者其他因素)导致ida解析错误,反而不能很好解析。hopper则相反。


关于为什么为知道0x4958对应的是那个方法,见下图

非常可以,居然加了颜色。

这种bundle里的可执行文件不太了解其加载过程,反正结果是hook不到的,跟加载的静态库和动态库不一样。


在Preferences.framework里InternationalSettingsController的初始化也很简单,直接alloc init就被初始化了

狗神,啥是lazy load bundle呀,我从mach-o里没看见这个节呢