因為工作需要大致分析下逆向思路來做一些常識柜蜈,所以就記錄了此文褐缠。主要用于未來自己的一個回顧和想法迭代。
一般來說逆向工程我們逆向的是里面的可執(zhí)行代碼碘菜,資源都是可以直接解壓開的。而逆向的基本結(jié)構(gòu)則是Mach-O文件(Mach Object文件)
主要結(jié)構(gòu)是:
Header(頭文件,架構(gòu)類型等)
Load Commands(描述文件在虛擬內(nèi)存中的結(jié)構(gòu)和布局)
Raw Segments Data(在Load Commands的Segments原始數(shù)據(jù))
我們知道大概結(jié)構(gòu)之后就有了逆向思路忍啸。
分析工具:
Cycript仰坦、Reveal
用作界面分析
class-dump
可以根據(jù)Mach-O文件的運行原理,獲得其所有頭文件結(jié)構(gòu)计雌。有了頭文件結(jié)構(gòu)悄晃,大概可以分析出應(yīng)用的整體結(jié)構(gòu)。
http://stevenygard.com/projects/class-dump/
MachOView
可以查看Mach-O的工具
https://github.com/gdbinit/MachOView
dumpdecrypted
在Appstore上下的應(yīng)用都被加密過了凿滤,要獲取頭文件都要先砸殼妈橄。砸殼,需要用到dumpdecrypted
https://github.com/stefanesser/dumpdecrypted/
Hopper Disassembler
根據(jù)class-dump的頭文件結(jié)構(gòu)翁脆,來分析對應(yīng)的二進制文件眷蚓。
https://www.hopperapp.com/
debugserver、LLDB
用作動態(tài)調(diào)試分析反番,對運行中的 APP 進行代碼調(diào)試
代碼編寫后溪椎,注入代碼到 APP 中,還需要 重新簽名恬口、打包ipa等校读。
大佬的實戰(zhàn)細(xì)節(jié)操作:
http://www.reibang.com/p/78de4edeee39
更細(xì)節(jié)的東西可以參考下其他大佬的博客:
http://www.swiftyper.com/