ios14.6 monkeydev Logos tweak 逆向發生錯誤

使用Hopper查看需要hook的函示为下面

/* @class _TtC13hookdemoswift14ViewController */
-(void)btnClick:(void *)arg2 {
    [self retain];
    Swift._bridgeAnyObjectToAny();
    r0 = sub_100007a04(0x1000118a8);
    r0 = swift_allocObject(r0, 0x40, 0x7);
    r8 = *type metadata for Swift.String;
    *(int128_t *)(r0 + 0x10) = *0x100009ea0;
    *(r0 + 0x38) = r8;
    *(int128_t *)(r0 + 0x20) = 0x6f57206f6c6c6548;
    *(int128_t *)(r0 + 0x28) = 0xeb00000000646c72;
    Swift.print();
    swift_release(r19);
    sub_100007a40(&stack[-64]);
    [r20 release];
    return;
}

透过monkey的logos tweak去hook,.xm档案的程式码如下

// See http://iphonedevwiki.net/index.php/Logos

#if TARGET_OS_SIMULATOR
#error Do not support the simulator, please use the real iPhone Device.
#endif

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>


//@interface _TtC9DEMOswift14ViewController:UIViewController
//@end
%hook hookdemoswift.ViewController

-(void)btnClick:(void *)arg2 {
    %orig;
    %log;
    // 在hook方法中添加您的自定义逻辑
    NSLog(@"Hooked buttonforhook:");
    
    // 调用原始方法
   
    return;
}

%end

.xm的程式透过monkeydev app测试是可以正常hook的
被hook的手机为ios14.6版本,
会发生
Thread 1: EXC_BAD_ACCESS (code=2, address=0x104b2be94)的错误,如何解决,但是ios13版本得iphone不会发生
詳細錯誤

#0    0x000000010079fe38 in _logosLocalInit() at /Users/user/Desktop/testhook2/testhook2/testhook2.xm:27
#1    0x0000000100933880 in ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) ()
#37    0x0000000100919038 in _dyld_start ()

【以下回答由 GPT 生成】

从提供的信息来看,错误发生在-(void)btnClick:(void *)arg2函数中,具体是在哪一行代码导致错误并不清楚。但是,我可以提供一些常见的解决方案,帮助你解决这个问题。

  1. 调试错误:
  2. 在错误发生的函数中,使用断点调试的方法逐行查看代码执行情况,定位到具体的错误行。
  3. 使用Xcode的调试工具和功能,如日志输出、内存监控等,在运行时捕获错误信息,帮助定位问题。

  4. 检查内存访问问题:

  5. 错误常常发生在访问无效的内存地址时。在需要hook的函数中,确保所有的内存访问都合法且没有越界。
  6. 检查是否有指针错误、内存泄漏或内存释放不当等问题,这些问题可能导致EXC_BAD_ACCESS错误。

  7. 检查函数参数和返回值:

  8. 确保在hook函数中正确处理参数和返回值的类型和值。
  9. 检查是否对函数参数进行了正确的类型转换,例如将void*转换为正确的类型。
  10. 确保函数参数的大小和类型与原函数一致,以避免内存错误。

请注意,由于提供的代码片段不完整,我无法对具体的错误进行深入的分析和解决。因此,以上是一些常见的解决方案,希望能帮到你解决问题。如果你还需要进一步的帮助,请提供更多的代码和错误信息。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^