JT Blog

Thinking will not overcome fear but action will.

逆向工程

class-dump

从可执行文件列举出类名和方法名的工具 class-dump原理分析 处理输入参数 判断目标文件格式,确定目标架构 分别处理符号表、协议、类、分类 处理类型type 生成头文件 class-dump -H /Applications/Calculator.app -o /Users/GofLee/Desktop/CalculateHeads 将里面的cl...

逆向工程

动态库

静态库直接编译到目标文件,更新需要重新编译 动态库只链接符号,动态载入运行,更新只需重新编译动态库,重新启动加载即可 导出和隐藏符号 static export_list -fvisibility=hidden 函数调用顺序 ` attribute((constructor))` main ` attribute((destructor))...

逆向工程

APP签名

APP签名 Code Signature codesign -dvvvv 可执行文件查看签名信息 签名流程: 1 在本地生成certificatesigningrequest.certsigningrequest给苹果服务器,然后苹果对其进行私钥加密,生成ios_develpment.cer的证书,然后用其对APP进行签名;在进行签名的时候会使用本地的私钥进行加密(其对应的公钥为ce...

逆向工程

应用砸壳

应用砸壳 壳是应用程序加密保护的一种方式。 为什么要砸壳 class-dump无法作用于加密过得文件 IDA无法对加壳的文件进行分析 查看文件是否加壳 查看文件是否加壳: otool -l WeChat | grep cryptid 查看可执行文件的加密标识: otool -l leapParent | grep crypt cryptoff 1638...

逆向工程

Mach-O文件格式

参考 ios的可执行文件格式是Mach-O格式。 MachOView查看Mach-o文件头部。

逆向工程

汇编


逆向工程

HOOK

Hook的几种方式 Method Swizzle,作用于OC fishhook,作用于C Cydia Substrate,作用于OC、C、函数地址 Hook原理 Method Swizzle 方法交换 fishhook #import <Foundation/Foundation.h> #import "fishhook.h" #import &l...

逆向工程

类与方法

LLDB常用命令 打印值、修改值、调用方法 p、po 打印值 p 和 po 的区别在于使用 po 只会输出对应的值,而 p 则会返回值的类型以及命令结果的引用名。 (lldb) p width (CGFloat) $10 = 70 (lldb) po width 70 类与方法 在AppDelegate中打断点,执行lldb命令查看 (lldb) p self (AppDel...

逆向工程

数据存储

文件系统 数据存储 plist文件 像memgraph这样的二进制plist文件查看方式,可以转换为plist文件 plutil -convert xml1 /Users/li/Desktop/ALIHA_20190419.tlog -o /Users/li/Desktop/ALIHA_20190419.plist User Defaults Data bas...

逆向工程

数据存储

文件系统 数据存储 plist文件 像memgraph这样的二进制plist文件查看方式,可以转换为plist文件 plutil -convert xml1 /Users/li/Desktop/ALIHA_20190419.tlog -o /Users/li/Desktop/ALIHA_20190419.plist User Defaults Data bas...