美文网首页ios 逆向开发
《iOS防护01》ptrace防护

《iOS防护01》ptrace防护

作者: 不仅仅是个程序猿 | 来源:发表于2020-10-29 18:02 被阅读0次
    获取ptrace.h头文件

    prace.h是系统的C语言文件。

    1. 首先用Xcode创建一个命令行程序


      截屏2020-10-29下午5.33.45.png
    2. 命令行程序的 mian.m 中导入 ptrace 头文件
      import <sys/ptrace.h>


      截屏2020-10-29下午5.38.06.png
    3. 查看 ptrace.h 的定义,复制ptrace.h中的代码


      截屏2020-10-29下午5.41.29.png
    使用ptrace进行防护
    1. 首先用Xcode创建一个工程名为ptraceDemo的ios工程。
    2. 创建一个头文件PtraceHeader.h,将之前获取的ptrace.h的代码粘贴进去。
    3. 在ViewController.m中导入头文件PtraceHeader.h,并使用ptrace函数进行反调试防护。

    ptrace函数的原型为:
    int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data);
    /*
    参数1: ptrace要做的事情(PT_DENY_ATTACH代表拒绝附加)
    参数2: 要操作的进程的id (0表示当前进程)
    参数3: 地址
    参数4:数据
    参数3和参数4取决与第一个参数
    */

    截屏2020-10-29下午5.47.31.png

    通过Xcode在iPhone手机运行ptraceDemo,发现运行后程序直接闪退了。而在手机桌面点击app图标后正常运行。

    这是因为通过Xcode安装应用到手机,lldb默认会附加到应用,ptrace会拒绝附加,所以会闪退。

    总结

    ptrace防护的特点:

    • 重签名应用后,通过Xcode运行闪退
    • 手动打开应用正常运行

    如果程序有以上特点,说明应用很可能采用了ptrace进行防护。

    接下来可以通过对重签名后的应用添加符号断点,来验证app确实是用了ptrace。

    1. 添加符号断点


      截屏2020-10-30上午10.22.25.png
    1. 运行app后出现下图情况,说明app确实使用了ptrace防护
    截屏2020-10-30上午10.24.51.png

    相关文章

      网友评论

        本文标题:《iOS防护01》ptrace防护

        本文链接:https://www.haomeiwen.com/subject/tkflvktx.html