iOS逆向工具、命令总结

plutil

plutil是xcode自带的对.plist文件操作的工具

验证plist文件有效性
plutil -lint example.plist
查看ipa文件的bundle identifier
➜ live4iphone.app plutil -p Info.plist | grep CFBundleIdentifier
输出结果:
"CFBundleIdentifier" => "com.tencent.live4iphone"
查看可执行文件:

 ➜  live4iphone.app plutil -p Info.plist | grep CFBundleExecutable
  "CFBundleExecutable" => "live4iphone"

查看本地化的字符串:
➜ en.lproj plutil -p Localizable.strings

dpkg

deb是越狱开发安装包的标准格式,dpkg-deb是一个用于操作deb文件的工具,用此工具可以打包为deb,或者安装deb包
查看deb包结构
➜ packages dpkg -c com.qding.firsttweak_0.0.1-9+debug_iphoneos-arm.deb

class-dump

1、定位App的可执行文件(进程名)

pwd
/Users/wuhaiwei/Desktop/ipaFile/Payload/qding.app
plutil -p Info.plist | grep CFBundleExecutable
"CFBundleExecutable" => "qding"

2、将Mach-o文件的头文件导入指定路径
class-dump -S -s -H qding -o ~/Desktop/headerFile
3、输出的头文件中包含函数的偏移前地址
➜ WeChatMach_O class-dump -HA WeChat -o ~/Desktop/weChatHeader

Logify (静态分析工具)

Logify是一种实用工具,可以将类的头文件(.h文件)作为输入,并生成MobileSubstrate文件(.xm文件)。
作用:能自动Hook该类所有的方法,并生成打印日志信息代码,方便开发人员看到在使用过程中调用了某些方法。
logify.pl BaseMsgContentViewController.h > Tweak.xm

idevicesyslog (iOS日志查看工具)

是libimobiledevice下的一个子工具,可以实时追踪iOS设备日志。

idevicesyslog | grep "BaseMsgContentViewController"

usbmuxd

由于Mac上只支持4位的端口号,所以需要把iPhone的默认端口22映射到Mac上,相当于建立一个Mac和iPhone之间的通道。打开终端,执行:
iproxy 10088 22
这时终端会显示 waiting for connection 这表示我们已经搭建好Mac和iPhone的通道,现在我们直接和本地的12345端口通信就能和iPhone通信了。保持上一个命令显示的状态,新建个终端执行:
ssh -p 10088 root@127.0.0.1
输入ssh密码即可实现ssh连接

SSH

1、从ios copy文件到mac
scp root@10.39.72.155:/System/Library/CoreServices/SpringBoard.app/SpringBoard Desktop/SpringBoard
2、从mac copy文件到ios
scp -r Desktop/RevealServer.framework root@192.168.0.102:/Library/Frameworks
3、链接SSH
ssh root@10.39.72.155

THEOS

普通情况下安装需要指定手机的ip地址进行安装:
#THEOS_DEVICE_IP = 10.39.72.36
很明显比较低效,尤其是ip地址经常变换的局域网里面。

也可以通过usb的方式进行安装,指定本地ip、端口号即可

export THEOS_DEVICE_IP=127.0.0.1 #本机IP地址
export THEOS_DEVICE_PORT=10088   #本机端口号

然后开启iproxy端口代理:
iproxy 10088 22
具体安装命令都是
make package install
当然也可以将

export THEOS_DEVICE_IP=127.0.0.1 #本机IP地址
export THEOS_DEVICE_PORT=10088   #本机端口号

配置到环境变量里面,就不用每个tweak都复制这两行代码

tweak中包含的资源文件需要放置在特定的路径下,tweak工程下创建layout目录,如果把资源文件放置layout目录下,安装后资源文件在iPhone的“/”(根目录)下,
所以资源文件一般放在:
/Library/PreferenceLoader/Preferences/firsttweak
对资源文件的引用需要按路径引用:
[UIImage imageWithContentsOfFile:@"/Library/PreferenceLoader/Preferences/firsttweak/icon.png"]

cycript

cycript官网
Cycript是一个理解Objective-C语法的javascript解释器,它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西。

由于目前 iOS 12.2中cycript不可用,替换用cyrun可用

加载注入cycript
cyrun -n qding -e cyrun -b com.qding.www -e
卸载
cyrun -n qding -d cyrun -b com.qding.www -d
加载和自动卸载,退出cycript时自动杀掉App并卸载
cyrun -x qding -e -d -f
退出cycript
control + D
查看app的层级结构
UIApp.keyWindow.recursiveDescription().toString()
hook类的实例方法
SBUIController.prototype['handleHomeButtonDoublePressDown'] = function(){};

debugserver

LLDB是Xcode内置的动态调试工具。debugserver运行在iOS上,他作为服务端实际执行LLDB传过来的命令,显示给用户,即所谓的”远程调试”
附加进程(接受任意192.168.0.100对端口2222的访问,需要先运行app)
kogatsu:~ root# debugserver 192.168.0.100:2222 -a "qding"

LLDB

进入lldb环境
➜ ~ /Applications/Xcode.app/Contents/Developer/usr/bin/lldb
连接手机
(lldb) process connect connect://192.168.0.102:2222
查看对应进程内的模块儿偏移量、偏移后地址

(lldb) image list -o -f | grep SpringBoard
[  0] 0x0000000002b2c000 /System/Library/CoreServices/SpringBoard.app/SpringBoard(0x0000000102b2c000)

其中第二列是ASLR偏移量,最后面括号内是偏移后地址

这里需要着重说一下通过usbmuxd进行连接然后进行lldb调试
在iPhone端:
debugserver 127.0.0.1:2222 -a WeChat
在mac端:
首先要另起一个终端进行端口映射:
iproxy 2222 2222
然后进行lldb连接调试

➜  ~ lldb
(lldb) process connect connect://localhost:2222

没有了各种ip地址,简直爽的不要不要的

签名

列出可签名证书, 找到 mac 上面已经安装的证书
$ security find-identity -v -p codesigning
使用本机安装的开发者证书为 dumpecrypted.dylib 签名

➜ dumpdecrypted codesign --force --verify --verbose --sign "iPhone Developer: chunyu zhao (6QGT7NS2J4)" dumpdecrypted.dylib

查看二进制文件是否脱壳

//cryptid 0(砸壳) 1(未砸壳)

otool -l ~/Desktop/ipaFile/Payload/qding.app/qding | grep crypt
     cryptoff 16384
    cryptsize 19611648
      cryptid 0
     cryptoff 16384
    cryptsize 21921792
      cryptid 0

脱壳工具

下载源:apt.wxhbts.com
CrackerXI, 应用未启动状态脱壳
脱壳完成之后文件路径:
/var/mobile/Documents/CrackerXI

tweak安装后路径

/Library/MobileSubstrate/DynamicLibraries/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容