syscalls – int 0x80 IndexNum

ENTRY(“syscall”, SYS_syscall, do_unix_syscall_indirect, 0, CALL_INDIRECT, VOID) /* 0 indirect syscall / ENTRY(“exit”, SYS_exit, do_exit, 1, CALL_DIRECT, INT) / 1 / ENTRY(“fork”, SYS_fork, fork, 0, CALL_NOERRNO, VOID) / 2 / ENTRY(“read”, SYS_read, do_read, 3, CALL_DIRECT, INT, PTR, SIZE) / 3 / ENTRY(“write”, SYS_write, write, 3, CALL_DIRECT, INT, PTR, SIZE) / 4 / ENTRY(“open”, SYS_open, do_open, 3,…

Ubuntu Install And Use IDA Pro

from http://www.hexblog.com/?p=958 、http://www.hexblog.com/?p=1048, mark sudo dpkg –add-architecture i386 sudo apt-get update sudo apt-get install libc6-i686:i386 libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libglib2.0-0:i386 libice6:i386 libpcre3:i386 libpng12-0:i386 libsm6:i386 libstdc++6:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxrender1:i386 zlib1g:i386 libx11-xcb1:i386 libdbus-1-3:i386 libxi6:i386 libsm6:i386 libcurl3:i386 sudo apt-get install libgtk2.0-0:i386 gtk2-engines-murrine:i386 gtk2-engines-pixbuf:i386 libpango1.0-0:i386

Reveal无法连接Reveal Loader的解决办法

阅读本文时请先确定Reveal Loader的基本使用方法已经掌握,并在正确使用的情况下无法连接 情况一 : Reveal 与 Reveal Loader通信协议版本不一致,导致无法连接 *解决办法 : * 在Reveal Loader的源码中的RHRevealLoader.l.mm中我们可以看到其实际加载的是/Library/RHRevealLoader/libReveal.dylib 经过老司机点拨,明白了问题的关键自然就很好办了。找到Mac中Reveal目录中的LibReveal.dylib 使用命令拷贝到iPhone设备中scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib root@172.20.4.5:/Library/RHRevealLoader/libReveal.dylib PS:感谢老司机0xcb的指点 *情况二 : wifi的限制问题 遇到过wifi2g信号无法连接成功,找了个新的网络成功 情况二 : app注入失败 支付宝使用了restrict 设置也无法注入 *解决办法 : * hex搜索restrict替换任意字符

MacOS上使用Wireshark对IOS设备抓包

获取udid rvictl创建虚拟接口 MacOS上使用winrshark或者终端开始tcpdump进行抓包 使用完之后需要将创建的虚拟接口移除 获取udid rvictl创建虚拟接口 使用命令rvictl -s UDID创建虚拟接口 ios 设备连接wifi或使用2G/3G/4G, MacOS上使用winrshark或者终端开始tcpdump进行抓包 wireshark根据上图中可以知道虚拟接口名字为“rvi0” 或者在终端上使用命令sudo tcpdump -i rvi0 -w DumpFile.pcap 之后就可以根据各种包来进行分析了 使用完之后需要将创建的虚拟接口移除 使用命令rvictl -x UDID移除虚拟接口

Clutch的安装及使用方法

目录: 越狱手机一台 安装openssh并修改通讯密码 下载Clutch 使用Clutch 安装openssh与修改通讯密码 Cydia安装openssh就不说了,安装好后通过wifi详情中可以看到手机的局域网地址。随即打开电脑终端进行连接ssh root@xxx.xxx.xxx.xxx默认密码是”alpine”,通过以下命令修改默认密码。 使用Clutch 通过Clutch下载好包之后,终端远程上传到/usr/bin目录 (scp /Users/B1nGzL/Downloads/Clutch root@192.168.1.108:/usr/bin/Clutch)。 先Clutch -i获取安装列表,再Clutch -d fid进行dump,最后使用scp root@192.168.1.108:/private/var/mobile/Documents/Dumped/dumped.ipa /Users/B1nGzL/Desktop/dumped.ipa拷贝到本地

初探OSX x86_64传参

近来在搞OSX/IOS方面的东西,本篇文章仅为我想探索下xcode编译出的x64在传参规则上与vs编译是否有什么不同,毫无技术含量。 Win x64传参请移步 -> 初探x64参数变量及栈空间布局 编译器会为函数开辟函数自己的栈桢,空函数(无参数、无变量)源码如下: #import <Foundation/Foundation.h> float testfun1(){ return 1.0f; } int testfun2(){ return 2; } int main(int argc, const char * argv[]) { NSLog(@”testfun : %f %d”, testfun1(), testfun2()); return 0; } 从汇编上可以看到函数框架的返回值是在rax或者xmm0: __text:0000000100000F10 public _testfun1 __text:0000000100000F10 _testfun1 proc near ; CODE XREF: _main+16p __text:0000000100000F10 push rbp __text:0000000100000F11 mov rbp, rsp __text:0000000100000F14…

lldb使用方法(学习笔记)

一. 加载调试 调试本地文件 常规: lldb FilePath 带启动参数的调试: lldb FilePath Arg1 Arg2 ArgN 附加进程 通过进程id附加: ps aux | grep UserName | grep ProcName (lldb)process attach –pid PidNum 通过进程名附加: (lldb)process attach -name ProcName 二. 断点 根据文件名和行号下断点(调试信息) 根据函数名下断点(调试信息) 根据虚拟地址下断点 breakpoint set -a VitrualAddress 查看/禁用/启用/删除 断点 breakpoint list breakpoint disable BPNUM breakpoint enable BPNUM breakpoint delete BPNUM 内存断点 watchpoint…

Foundation框架之NSDate使用方法

* 在Xcode中NSDate有三处继承不同父类的声明 第一部分有以下成员函数(方法): 功能:以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT的时间间隔 -(readonly) NSTimeInterval timeIntervalSinceReferenceDate; 功能:初始化 -(instancetype)init; 功能:把以2001/01/01 GMT为基准的时间加上(NSTimeInterval)ti秒的结果返回 -(instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti; 功能:序列化存储(例如有些情况要保存到磁盘,下次打开app获取对象数据) -(nullable instancetype)initWithCoder:(NSCoder *)aDecoder; 使用代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSDate* objDate = [[NSDate alloc] init]; NSTimeInterval dbTime = [objDate timeIntervalSinceReferenceDate]; NSLog(@”当前时间与2001/01/01 GMT的时间间隔 : %f”,dbTime); id idTest = [objDate initWithTimeIntervalSinceReferenceDate:0.0]; NSLog(@”以2001/01/01 GMT为基准,然后过了n秒的时间 : %@”,idTest);…

初探Mach-O学习小记

近来在学习osx和ios方面的东西,简单熟悉了下oc的语法后打算学习下osx和ios下的文件格式。 Header 结构体定义在mach-o/loader.h头文件中 struct mach_header { uint32_t magic; cpu_type_t cputype; cpu_subtype_t cpusubtype; uint32_t filetype; uint32_t ncmds; uint32_t sizeofcmds; uint32_t flags; }; struct mach_header_64 { uint32_t magic; cpu_type_t cputype; cpu_subtype_t cpusubtype; uint32_t filetype; uint32_t ncmds; uint32_t sizeofcmds; uint32_t flags; uint32_t reserved; }; magic 用于判断程序的平台版本,也就是说判断是x86 or x64,在mach-o/loader.h中定义mach_header与mach_header_64 结构的附近会看到两条宏,如果MH_MAGIC的值是0xfeedface就说明是一个x86程序反之如果是0xfeedfacf 就是x64程序(以上理论基于osx)。 #define MH_MAGIC 0xfeedface /* the mach magic number…