iOS攻防 - (四)iOS应用防止被GDB附加到进程

标签: ios objective-c ssh cydia 越狱
782人阅读 评论(0) 收藏 举报
分类:
GDB/LLDB 动态调试iOS应用

LLDB官方文档:https://lldb.llvm.org/tutorial.html
GDB文档:https://www.cs.cmu.edu/~gilpin/tutorial/


准备工作
1.越狱iPhone一台
2.安装OpenSSH, 在Cydia里搜索并安装,目的是:从MacOS连接到iPhone
3.安装adv-cmds, 在Cydia里搜索并安装,目的是:SSH连接上iphone后,可以执行一些命令,如:进程状态显示
4.安装GDB Debugger, 在网站 http://cydia.radare.org/debs/  找到gdb,并下载,然后通过MacOS版的软件iTools或者iFunBox拖拽到iPhone目录:/var/root/Media/Cydia/AutoInstall  下,最后重新开机



调试步骤
1.ssh连接上iPhone
2.查询系统中的进程号相关信息
>ps -ax
3.查找需要动态调试的进程信息,如:WeChat(微信),微信一定要打开
>ps aux -c|grep WeChat
会输出信息如:
>mobile     239   0.0  5.1   766104  52556   ??  Ss    7:33PM   0:02.50 WeChat
那么我们就得到了进程ID:239

4.将进程附加到GDB
>gdb -p 239
然后,会输出一堆信息
5.给已知函数名打断点,比如函数名:-[WTLoginApi loginWithPasswd:andPasswd:andSigBitmap:andLoginFlag:retData:]:
>(gdb) b -[WTLoginApi loginWithPasswd:andPasswd:andSigBitmap:andLoginFlag:retData:]:
单步跳过
>(gdb) ni
单步步入
>(gdb) si
继续运行
>(gdb) continue
运行一个app
>(gdb) run
结束当前函数
>(gdb) finish



如何防止你的应用被GDB附加进程?
1.ptrace 介绍
https://en.wikipedia.org/wiki/Ptrace

2.阻止GDB附加 (来自念茜的博客)
http://blog.csdn.net/yiyaaixuexi/article/details/18222339

3.实际代码

#import <UIKit/UIKit.h>
#import <dlfcn.h>
#import "AppDelegate.h"

//定义一个函数指针用来接收动态加载出来的函数ptrace
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);

#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif

void DenyAppAttach() {

    //动态加载并链接指定的库
    //第一个参数path为0时, 它会自动查找 $LD_LIBRARY_PATH,$DYLD_LIBRARY_PATH, $DYLD_FALLBACK_LIBRARY_PATH 和 当前工作目录中的动态链接库.
    void * handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
    
    //动态加载ptrace函数,ptrace函数的参数个数和类型,及返回类型跟ptrace_ptr_t函数指针定义的是一样的
    ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
    
    //执行ptrace_ptr相当于执行ptrace函数
    ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
    
    //关闭动态库,并且卸载
    dlclose(handle);
}

int main(int argc, char * argv[]) {
    
#ifndef DEBUG
    DenyAppAttach();
#endif
    
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

如果你在Xcode调试环境下,去掉#ifndef DEBUG  #endif这句话,你会发现,Xcode无法调试该应用;因为动态的加载了ptrace,然后给传输的宏是PT_DENY_ATTACH 拒绝附加进程

到此为止,就到达目的了





查看评论

iOS安全攻防(四):阻止GDB依附

阻止GDB依附GDB是大多数hackers的首选,阻止GDB依附到应用的常规办法是:#import int main(int argc, char *argv[]) { #ifndef DEBUG...
  • yiyaaixuexi
  • yiyaaixuexi
  • 2014-01-13 15:24:54
  • 21298

iOS-防止GDB挂起(就这么简单)

什么是GDB? 所有发布的iOS设备都是基于ARM架构的。我们开发iOS应用的时候编写的Objective-C代码会首先转换成ARM汇编,然后转换成机器指令。对ARM汇编语言和使用GDB调试有很好掌握...
  • Cituses
  • Cituses
  • 2016-08-04 13:59:35
  • 762

ios反调试之--Using ptrace with PT_DENY_ATTACH

 转自:http://www.coredump.gr/articles/ios-anti-debugging-protections-part-1/ Many iOS applications...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2014-10-21 15:34:39
  • 2014

IOS 程序禁止被调试

IOS程序发布后,禁止被调试设置: 4.3.3开发环境 1. 新建 Entitlements.plist 文件,  新建Key: Can be debugged,  Value: NO。 2. ...
  • Blue_Dream_
  • Blue_Dream_
  • 2012-07-20 09:09:51
  • 1126

iOS开发之不得不会的gdb命令

更新说明:后面发现这篇文章介绍的比较全面 http://blog.csdn.net/ch_soft/article/details/6740000 文章转载于:http:/...
  • Mars2639
  • Mars2639
  • 2012-05-22 10:07:27
  • 6833

iOS平台的应用程序调试与分析(openssh + gdb)

标 题: 【原创】iOS平台的应用程序调试与分析 作 者: zhuliang 时 间: 2013-04-02,17:09:40 链 接: http://bbs.pediy.com/showthread...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2013-11-27 15:25:20
  • 6457

dlopen、dlsym和dlclose的使用和举例

dlopen、dlsym和dlclose的使用和举例     之前用过这三个函数一直没时间整理一下。今天抽时间整理一下。 1、函数简介 dlopen 基本定义 功能:打开一个动态...
  • bailyzheng
  • bailyzheng
  • 2013-12-27 16:13:09
  • 22075

iOS 使用动态库(dylib)和动态加载framework

在iphone上使用动态库的多为dylib文件,这些文件使用标准的dlopen方式来使用是可以的。那相同的在使用framework文件也可以当做动态库的方式来动态加载,这样就可以比较自由的使用appl...
  • donwei8
  • donwei8
  • 2016-06-30 11:22:13
  • 2581

iOS攻防 - (六)iOS应用使用Clutch脱壳

iOS应用使用Clutch脱壳 下载地址:https://github.com/KJCracks/Clutch/releases 1.将下载下来的Clutch改名为Clutch, 然后通过iT...
  • u013538542
  • u013538542
  • 2017-05-24 19:18:55
  • 1840

iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector

前段时间界内掀起一阵热更新浪潮,然后苹果大大就发火了,然后呢... 所有包含下载远程脚本、动态加载其他库这种操作嫌疑的App都被警告了。 本以为自己App内没有上面这种东西,可以放心度过此劫,可是没想...
  • yanglei3kyou
  • yanglei3kyou
  • 2017-03-24 12:02:22
  • 6649
    个人资料
    持之以恒
    等级:
    访问量: 31万+
    积分: 5587
    排名: 5909
    最新评论