关闭

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

标签: iosobjective-csshcydia越狱
639人阅读 评论(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 拒绝附加进程

到此为止,就到达目的了





0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

IDA + GDBServer实现iPhone程序远程调试

在早期的IDA中包含了一个iphoneserver的程序,这个程序就是配合IDA实现远程调试的。但是在最新版的IDA中这个东西已经不复存在了,因而下载的破解版的IDA中没有那个文件并不是被删除掉了,而...
  • eqera
  • eqera
  • 2014-02-05 00:26
  • 4827

iOS安全—阻止tweak注入hook api

在网上看到一种方法可以通过在Other Linker Flags中添加: 1-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null 的方法来阻止dy...
  • zcrong
  • zcrong
  • 2016-06-09 00:42
  • 1989

解决Android加固多进程ptrace反调试的思路整理

一、Android多进程反调试的原理代码 当ptrace附加目标进程时出现失败,正常情况下有理由认为目标进程已经被别的进程ptrace附加了。像梆梆加固就是采用的这种反调试的手法,效果还是不错的。 ...
  • QQ1084283172
  • QQ1084283172
  • 2016-12-13 23:08
  • 3933

《iOS应用安全攻防实战》读书笔记(一)

最近一直在研究iOS应用安全攻防方面的东西,这本书是一本好书,坚持写下去,这本书能带给我想要的收获。刚开始写,还没有找到正确的方式,人生需要不断思考。希望以后可以越来越得心应手。 关于iOS安全...
  • yaren0134
  • yaren0134
  • 2016-08-16 15:46
  • 590

iOS攻防 - (二)iOS应用敏感逻辑的保护方案

Objective-C 代码容易被 hook,暴露信息太赤裸裸,为了安全,改用 C 来写吧! 当然不是全部代码都要 C 来写,我指的是敏感业务逻辑代码。  本文就介绍一种低学习成本的,简易的,O...
  • u013538542
  • u013538542
  • 2017-05-02 11:07
  • 342

iOS攻防 - (九)将iOS应用注入dylib和hook后,重新签名并打包

iOS攻防 - (八)将iOS应用hook和注入dylib后,重新签名并打包1.下载微信,并解密WeChat.ipa我的本篇博客已经讲过,此处不再赘述 ;http://blog.csdn.net/u0...
  • u013538542
  • u013538542
  • 2017-05-27 20:12
  • 1964

iOS攻防 - (八)使用Introspy追踪和分析iOS应用

使用Introspy追踪和分析iOS应用转载自:http://wiki.jikexueyuan.com/project/ios-security-defense/introspy.html如果你已阅读...
  • u013538542
  • u013538542
  • 2017-05-26 15:41
  • 459

iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码

iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码 出于iOS应用的安全考虑,如:银行类型APP, 金融相关APP, 登录功能,支付功能等; 某些时候,我们需要对iOS应用的重...
  • u013538542
  • u013538542
  • 2017-05-05 16:59
  • 2897

iOS应用程序安全(22)-使用GDB进行运行时分析和操作

作者:Prateek Gianchandani 译者:吴发伟 原文网址:http://resources.infosecinstitute.com/ios-application-security...
  • O_surface_O
  • O_surface_O
  • 2014-02-12 13:50
  • 1116

iOS安全攻防(二十)动态调试利器---gdb基础篇

一、调试平台搭建   1、GNU Debugger。首先安装ios下的gdb调试器,添加源:cydia.radare.org 。搜索 GNU Debugger,安装之。(有些源的GDB好像不能用...
  • fishmai
  • fishmai
  • 2017-06-03 20:20
  • 267
    个人资料
    • 访问:265976次
    • 积分:5106
    • 等级:
    • 排名:第6333名
    • 原创:258篇
    • 转载:42篇
    • 译文:0篇
    • 评论:33条
    最新评论