注意:這招只可以運行在越獄環境的手機中
該需求的產生是因為某個Swift的方法Hook很麻煩,所以硬幹出來的
這次的目標是「手機音樂電台」
首先我從Appdelegate中發現了很可疑的關鍵字
disableAD
進去看了之後確定這個disableAD是一個由Swift類別封裝起來的方法
搜尋了一下該方法後看到他的記憶體位置
1
2
3
4這邊要特別說一下關於,這個記憶體位置
由於我是使用ARM64設備砸殼出來,所以記憶體位置會如我們所看到的是0x1002cdbe8
但如果今天砸殼的設備晶片是ARMv7或者其他型號,那該記憶體位置就會不同
後面的程式碼就必須要針對其他型號做Hook,相當麻煩...寫Code
- import必要框架
1 |
- 寫一個獲取記憶體位置的方法
1 | uint64_t getRealOffset(uint64_t offset) { |
- 拿出舊的方法返回值
1 | BOOL (*orig_disableAd)(); |
- 宣告新的值
1 | BOOL new_disableAd() { |
- 最後在ctor把新的值,利用我們已知道的記憶體位置(0x1002cdbe8)直接串改
1 | %ctor { |