隨著業(yè)務(wù)發(fā)展 安全攻防這塊也需要作了解,避免灰產(chǎn)薅羊毛。要想研究怎么弄盾 首先要去研究矛。
先介紹我用到的技術(shù)
- monkeydev 基本這個(gè)就是全套服務(wù)了,初級(jí)逆向開(kāi)發(fā)者用這個(gè)足已
- class dump 對(duì)砸殼后的app進(jìn)行恢復(fù)頭文件 方便我們了解。 (monkey dev 已集成)
- yoyolib 將動(dòng)態(tài)庫(kù)鏈接至app (monkey dev 已集成)
- pp助手 手頭沒(méi)有越獄機(jī) 無(wú)法砸殼,所以就用pp上的砸殼后的IPA 。
- hook工具 CaptainHook fishhook
Monkeydev
記得一定要看wiki 新手將wiki看個(gè)幾遍就行了。
class-dump
這個(gè)安裝之后需要將bin文件一道 /usr/bin or /usr/local/bin 如果提示無(wú)權(quán)限還需要給這個(gè)文件權(quán)限。
先簡(jiǎn)單介紹下CaptainHook
CHDeclareClass() //申明需要的類
CHOptimizedMethod()//需要hook的函數(shù) 參數(shù)有函數(shù)的類型 返回值
{
CHSuper2()調(diào)用原來(lái)的方法。
}
CHConstructor({
@autoreleasepool{
CHLoadLateClass() 加載這個(gè)類 執(zhí)行hooke
CHHook1() 需要hook的函數(shù)
}
})
其實(shí)你把monkey整個(gè)wiki 看過(guò)一遍基本能初步入門(mén)逆向。
這里介紹幾個(gè)小技巧。
- class-dump 之后的頭文件分析出自己需要的函數(shù) 當(dāng)我們需要調(diào)用宿主的類時(shí) 我們可以自己申明一個(gè)頭文件,包含我們需要的類 以及其方法
@interface MMTableViewInfo : NSObject
- (void)insertSection:(id)sec At:(int)index;
- (UITableView *)getTableView;
@end
這樣我們就有了代碼提示。沒(méi)必要去用runtime
- PP助手上一定要選 越獄包
- 在工程的buildSeting里搜 User-Defined ,如果搜不到 就搜 monkey ,會(huì)有幾個(gè)選項(xiàng)讓你選擇。我們將所有的都設(shè)置為yes 這時(shí)候 monkeydev 會(huì)幫你classdump 已經(jīng)做符號(hào)表恢復(fù)。
- 介紹個(gè)調(diào)試技巧, 自己看。
簡(jiǎn)單來(lái)說(shuō) 在lldb‘下獲取一個(gè)類所有函數(shù)的地址的方法, [fuckClass _shortMethodDescription]。
然后用b 0xfffffffff 就可以設(shè)置斷點(diǎn)拉 - 基本這時(shí)候你就可以去使用了啊 ??