未經(jīng)允許,禁止轉(zhuǎn)載
你的應(yīng)用正在被其他對(duì)手反向工程、跟蹤和操作?你的應(yīng)用是否依舊裸奔毫不防御?
鄭重聲明一下,懂得如何攻擊才會(huì)懂得如何防御,一切都是為了之后的防御作準(zhǔn)備。廢話少說(shuō),進(jìn)入正題。
今天總結(jié)一下為hack而做的準(zhǔn)備工作。
常用的命令和工具
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)打開的文件列表,別忘記一切皆文件,包括網(wǎng)絡(luò)連接、硬件等
otool ① ——查看程序依賴哪些動(dòng)態(tài)庫(kù)信息,反編代碼段……等等等等
nm ② ——顯示符號(hào)表
ldid ③ ——簽名工具
gdb ——調(diào)試工具
patch ——補(bǔ)丁工具
SSH ——遠(yuǎn)程控制
備注:
① otool, 可查看可執(zhí)行文件鏈接了哪些庫(kù)

可以得到:

可以反編譯AlipayWallet的TEXT段內(nèi)容, 截前10行:

② nm,顯示程序符號(hào)表,g表示global用支付寶現(xiàn)身說(shuō)法一下:

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

或者給應(yīng)用程序重新簽名:
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
ldid -S helloworld
arm-apple-darwin10-llvm-gcc-4.2 就是了。為了方便起見,可以在.bashrc或者profile 配置下環(huán)境變量,方便編譯。
2.找到SDK

編譯我們自己的程序的時(shí)候需要指定該目錄下的SDK。
3.來(lái)個(gè)經(jīng)典Hello world :
Objective-C
1
2
3
4
5
include <stdio.h>
int main(){
printf("Hello world !!!\n");
return 0;
}
4.編譯

其中 -isysroot用來(lái)指定build時(shí)的SDK
5.校驗(yàn)

file查看一下類型,沒問(wèn)題。
6.SCP給iPhone、iPad前提是,設(shè)備已經(jīng)越獄并且安裝了SSH,且必須在同一網(wǎng)段。$scp helloworld root@x.x.x.x:hello world
7.登錄設(shè)備簽名$ssh -l root x.x.x.x#ldid -S helloworld
8.執(zhí)行程序#./helloworldHello world !!!
運(yùn)行成功,這就完成了最簡(jiǎn)單的手動(dòng)執(zhí)行自己的應(yīng)用程序。
注:本文參考了《念茜的博客》
