RunLoop

什么是RunLoop

CFRunLoopRef 的代码是开源的,你可以在这里 http://opensource.apple.com/tarballs/CF/ 下载到整个 CoreFoundation 的源码来查看。 https://github.com/apple/swift-corelibs-foundation/ 这个是swift版的开源。

Mehr lesen

CydiaSubstrate 实践

CydiaSubstrate是绝大部分tweak正常工作的基础,它由MobileHooker、MobileLoader和Safe mode组成。

MobileHooker

MobileHooker的作用是替换系统函数,也就是所谓的hook,它主要包含以下两个函数:

1
2
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);
void MSHookFunction(void* function, void* replacement, void** p_original);

Mehr lesen

dyld_decache 导出系统库的可执行文件

原理

Howettblog 这里有介绍

Mehr lesen

dumpdecrypted砸壳教程

准备步骤

Mehr lesen

class-dump 导出库头文件

1、class-dump 下载地址

安装步骤:

Mehr lesen

反调试

防止GDB、lldb依俯。关键字 ptrace

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import <dlfcn.h>  
#import <sys/types.h>

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 // !defined(PT_DENY_ATTACH)

void disable_gdb() {
void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}

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

Mehr lesen

用usb远程连接越狱设备进行调试

移动端要做的操作:http://iphonedevwiki.net/index.php/SSH_Over_USB

itnl_rev8 文件下的文件拷贝一下,

Mehr lesen

theos的安装以及使用

theos的安装 《iOS逆向开发 第2版》这本书里面的介绍

    Mehr lesen

    越狱一些命令备忘、小工具

    远程登录:

    ssh root@192.168.2.5 -p 22 默认密码是:alpine

    Mehr lesen

    分析iOS的截屏功能的例子(iOS8)

    思路

    • 1、用ssp 导出 Springboard的二进制文件到OS。
    • 2、用class-dump导出Springboard的所有头文件。

    Mehr lesen