鍍金池/ 教程/ iOS/ Hack 必備的命令與工具
Hack 實(shí)戰(zhàn)——支付寶 App 手勢(shì)密碼校驗(yàn)欺騙
使用 Reveal 分析他人 App
后臺(tái) daemon 非法竊取用戶(hù) iTunesstore 信息
使用 iNalyzer 分析應(yīng)用程序
越獄檢測(cè)的攻與防
使用 introspy 追蹤分析應(yīng)用程序
廢除應(yīng)用程序的 ASLR 特性
使用 Cycript 修改支付寶 App 運(yùn)行時(shí)
敏感邏輯的保護(hù)方案
Fishhook
使用 class-dump-z 分析支付寶 App
static 和被裁的符號(hào)表
iOS7 的動(dòng)態(tài)庫(kù)注入
二進(jìn)制和資源文件自檢
Hack 實(shí)戰(zhàn)——探究支付寶 App 手勢(shì)密碼
使用 Keychain-Dumper 導(dǎo)出 keychain 數(shù)據(jù)
數(shù)據(jù)擦除
Hack 實(shí)戰(zhàn)——解除支付寶 App 手勢(shì)解鎖錯(cuò)誤次數(shù)限制
Objective-C 代碼混淆
阻止 GDB 依附
基于腳本實(shí)現(xiàn)動(dòng)態(tài)庫(kù)注入
Hack 必備的命令與工具
鍵盤(pán)緩存與安全鍵盤(pán)
數(shù)據(jù)保護(hù) API

Hack 必備的命令與工具

常用的命令和工具

ps ——顯示進(jìn)程狀態(tài),CPU 使用率,內(nèi)存使用情況等
sysctl ——檢查設(shè)定 Kernel 配置
netstat ——顯示網(wǎng)絡(luò)連接,路由表,接口狀態(tài)等
route ——路由修改
renice ——調(diào)整程序運(yùn)行的優(yōu)先級(jí)
ifconfig ——查看網(wǎng)絡(luò)配置
tcpdump ——截獲分析網(wǎng)絡(luò)數(shù)據(jù)包
lsof ——列出當(dāng)前系統(tǒng)打開(kāi)的文件列表,別忘記一切皆文件,包括網(wǎng)絡(luò)連接、硬件等
otool ① ——查看程序依賴(lài)哪些動(dòng)態(tài)庫(kù)信息,反編代碼段……等等等等
nm ② ——顯示符號(hào)表
ldid ③ ——簽名工具
gdb ——調(diào)試工具 patch ——補(bǔ)丁工具
SSH ——遠(yuǎn)程控制

備注: ① otool,可查看可執(zhí)行程序都鏈接了那些庫(kù): otool -L WQAlbum

可以得到:

WQAlbum:
    /System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AdSupport.framework/AdSupport (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /System/Library/Frameworks//MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 40.0.0)
    /System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 1.0.0)
……

可以反編譯 WQAlbum 的 __TEXT__ 段內(nèi)容, 截前 10 行: otool -tV WQAlbum |head -n 10

可以得到:

WQAlbum:
(__TEXT,__text) section
start:
00002de0    pushl   $0x00
00002de2    movl    %esp,%ebp
00002de4    andl    $0xf0,%esp
00002de7    subl    $0x10,%esp
00002dea    movl    0x04(%ebp),%ebx
……

② nm,顯示程序符號(hào)表,用我自己的應(yīng)用程序私人相冊(cè)現(xiàn)身說(shuō)法一下: nm -g WQAlbum ( -g 代表 global )

可以得到:

001e5eec S _OBJC_IVAR_$_WQPhotoViewController.albumObject
001e5efc S _OBJC_IVAR_$_WQPhotoViewController.int_current
001e5f00 S _OBJC_IVAR_$_WQPhotoViewController.int_total

其中,WQPhotoViewController 為類(lèi)名,albumObject 為該類(lèi)的成員

③ ldid,是 iPhoneOS.platform 提供的簽名工具,我們自己編譯的程序需要簽上名才能跑在 iPhone/iPad 上,使用方法

export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
ldid -S helloworld 

編譯 Hello World

首先找到編譯器:

http://wiki.jikexueyuan.com/project/ios-security-defense/images/hacktools1.png" alt="hacktools1" />

arm-apple-darwin10-llvm-gcc-4.2 就是了。 為了方便起見(jiàn),可以在 .bashrc 或者 profile 配置下環(huán)境變量,方便編譯。

找到 SDK

編譯我們自己的程序的時(shí)候需要指定該目錄下的 SDK 。

來(lái)個(gè)經(jīng)典 Hello World :

#include <stdio.h>                                                                                            
int main(){  
       printf("Hello world !!!\n");  
       return 0;  
}

編譯

http://wiki.jikexueyuan.com/project/ios-security-defense/images/hacktools2.png" alt="hacktools2" />

其中 -isysroot 用來(lái)指定 build 時(shí)的 SDK

校驗(yàn)

http://wiki.jikexueyuan.com/project/ios-security-defense/images/hacktools3.png" alt="hacktools3" />

file 查看一下類(lèi)型,沒(méi)問(wèn)題。

SCP 給 iPhone、iPad

前提是,設(shè)備已經(jīng)越獄并且安裝了 SSH ,且必須在同一網(wǎng)段。 $scp helloworld root@x.x.x.x:hello world

登錄設(shè)備簽名

$ssh -l root x.x.x.x

#ldid -S helloworld

執(zhí)行程序

#./helloworld
Hello world !!!  

運(yùn)行成功,這就完成了最簡(jiǎn)單的手動(dòng)執(zhí)行自己的應(yīng)用程序。