按照这个帖子http://www.iosre.com/t/7-2-0-ios/770的方式hook一个sub_xxx函数,app启动闪退,crashlog显示EXC_BAD_ACCESS,请问可能是哪里出了问题
需求:hook一个hopper反编译得到的一个sub_xxx函数
操作步骤:编写tweak,安装,启动app
代码:
void (*old_sub_ACF0)(void *);
void new_sub_ACF0(void *hiddenThis)
{
NSLog(@“iOSRE: anti-anti-debugging”);
old_sub_ACF0(hiddenThis);
}
%ctor
{
@autoreleasepool
{
unsigned long _sub_ACF0 = (_dyld_get_image_vmaddr_slide(0) + 0x1867c) | 0x1;
if (_sub_ACF0) NSLog(@“iOSRE: Found sub_ACF0!”);
MSHookFunction((void *)_sub_ACF0, (void *)&new_sub_ACF0, (void **)&old_sub_ACF0);
}
}
闪退日志:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000000007867d
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [0]
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 CydiaSubstrate 0x0000000101c40350 0x101c2c000 + 82768
1 TestTweak.dylib 0x0000000101c23ee0 0x101c20000 + 16096
2 dyld 0x0000000101af995c ImageLoaderMachO::doModInitFunctions+ 88412 (ImageLoader::LinkContext const&) + 372
3 dyld 0x0000000101af9b84 ImageLoaderMachO::doInitialization+ 88964 (ImageLoader::LinkContext const&) + 36
4 dyld 0x0000000101af4f2c ImageLoader::recursiveInitialization+ 69420 (ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 368
5 dyld 0x0000000101af3f50 ImageLoader::processInitializers+ 65360 (ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 140
6 dyld 0x0000000101af4004 ImageLoader::runInitializers+ 65540 (ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 84
7 dyld 0x0000000101ae97dc dyld::runInitializers+ 22492 (ImageLoader*) + 88
8 dyld 0x0000000101aee888 dlopen + 1032
9 libdyld.dylib 0x000000018c0bad5c dlopen + 76
10 SubstrateLoader.dylib 0x0000000101bb5acc 0x101bb4000 + 6860
11 dyld 0x0000000101af995c ImageLoaderMachO::doModInitFunctions+ 88412 (ImageLoader::LinkContext const&) + 372
12 dyld 0x0000000101af9b84 ImageLoaderMachO::doInitialization+ 88964 (ImageLoader::LinkContext const&) + 36
13 dyld 0x0000000101af4f2c ImageLoader::recursiveInitialization+ 69420 (ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 368
14 dyld 0x0000000101af3f50 ImageLoader::processInitializers+ 65360 (ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 140
15 dyld 0x0000000101af4004 ImageLoader::runInitializers+ 65540 (ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 84
16 dyld 0x0000000101ae97dc dyld::runInitializers+ 22492 (ImageLoader*) + 88
17 dyld 0x0000000101aee888 dlopen + 1032
18 libdyld.dylib 0x000000018c0bad5c dlopen + 76
19 dyld 0x0000000101af995c ImageLoaderMachO::doModInitFunctions+ 88412 (ImageLoader::LinkContext const&) + 372
20 dyld 0x0000000101af9b84 ImageLoaderMachO::doInitialization+ 88964 (ImageLoader::LinkContext const&) + 36
21 dyld 0x0000000101af4f2c ImageLoader::recursiveInitialization+ 69420 (ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 368
22 dyld 0x0000000101af3f50 ImageLoader::processInitializers+ 65360 (ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 140
23 dyld 0x0000000101af4004 ImageLoader::runInitializers+ 65540 (ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 84
24 dyld 0x0000000101ae6438 dyld::initializeMainExecutable+ 9272 () + 140
25 dyld 0x0000000101aea8f4 dyld::_main+ 26868 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3892
26 dyld 0x0000000101ae5044 _dyld_start + 68