五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Frida Hook

2020-07-26 12:52 作者:無情劍客Burning  | 我要投稿

聲明: 謝絕一切形式的轉載。 @[toc]

Hook

Hook 技術又叫做鉤子函數(shù),在系統(tǒng)沒有調用該函數(shù)之前,鉤子程序就先捕獲該消息,鉤子函數(shù)先得到控制權,這時鉤子函數(shù)既可以加工處理(改變)該函數(shù)的執(zhí)行行為,還可以強制結束消息的傳遞。簡單來說,就是把系統(tǒng)的程序拉出來變成我們自己執(zhí)行代碼片段。

非常類似于中間人攻擊,只不過中間人是鉤子,操控的是程序的執(zhí)行流程。

在不同平臺下編寫hook代碼是一件很痛苦的事情,Windows下,必須要熟悉窗口、消息傳遞機制的,而在Linux下hook底層的消息還需要重新編寫內核模塊,在Android平臺要Hook動態(tài)庫文件,要懂得arm匯編。

而Frida的出現(xiàn),讓一切變得簡單了,只需要會Python,會JavaScript就能夠hook任何想hook的內容。

Frida is so great!

Frida

Frida是一個動態(tài)代碼檢測工具。它允許你將JavaScript代碼片段或者你自己的庫注入到到Windows、 macOS、GNU/Linux、iOS、Android,、and QNX的本機應用中。Frida還為您提供了一些基于Frida API的簡單工具。這些可以按原樣使用,也根據(jù)您的需要進行調整,或者用作有關如何使用API的示例。

安裝

僅需呀一行命令就可以完成安裝,當然前提條件是已經(jīng)已經(jīng)安裝了Python,版本最好是3.x。

  1. pip install frida-tools

網(wǎng)上狠毒文章說使用 pip install fridapip install frida-tools 進行安裝,但是現(xiàn)在一條命名就夠了。如果不嫌麻煩,也可以通過源碼進行安裝。

具體可參見https://blog.csdn.net/helloworlddm/article/details/105068941。

Frida架構

Windows

開啟一個可以注入的進程

本文使用的是記事本notepad.exe,打開記事本。

編寫代碼

編寫example.py,枚舉進程使用的模塊。

  1. import frida


  2. def on_message(message, data):

  3. ? ?print("[on_message] message:", message, "data:", data)


  4. session = frida.attach("notepad.exe")


  5. script = session.create_script("""

  6. rpc.exports.enumerateModules = function () {

  7. ?return Process.enumerateModules();

  8. };

  9. """)

  10. script.on("message", on_message)

  11. script.load()


  12. print([m["name"] for m in script.exports.enumerate_modules()])

運行,可以看出notepad.exe使用了什么模塊。

Linux

前提

首先需要使用下面的命令 "to enable ptracing non-child processes"

  1. sudo sysctl kernel.yama.ptrace_scope=0

開啟一個可以注入的進程

本文開啟crackerMe00,如下所示:

編寫代碼

另外開啟一個終端, 編寫example.py,枚舉進程使用的模塊。

  1. import frida


  2. def on_message(message, data):

  3. ? ?print("[on_message] message:", message, "data:", data)


  4. session = frida.attach("crackerMe00")


  5. script = session.create_script("""

  6. rpc.exports.enumerateModules = function () {

  7. ?return Process.enumerateModules();

  8. };

  9. """)

  10. script.on("message", on_message)

  11. script.load()


  12. print([m["name"] for m in script.exports.enumerate_modules()])

運行,可以看出crackerMe00使用了哪些模塊。

Android

前提

手機需要ROOT,不ROOT也是可以的,需要該一些配置文件。后續(xù)文章會說。將frida-server推送到手機中。運行./frida-server

查看進程信息 frida-ps-U

編寫代碼

編寫example.py,枚舉進程使用的模塊。

  1. import frida


  2. def on_message(message, data):

  3. ? ?print("[on_message] message:", message, "data:", data)


  4. session = frida.get_usb_device().attach("com.android.chrome")


  5. script = session.create_script("""

  6. rpc.exports.enumerateModules = function () {

  7. ?return Process.enumerateModules();

  8. };

  9. """)

  10. script.on("message", on_message)

  11. script.load()


  12. print([m["name"] for m in script.exports.enumerate_modules()])

運行,結果如下:

公眾號

關于Frida有一句很流行的話:沒有做不到,只有想不到。打算開一個frida專題,歡迎多多支持。更多內容歡迎關注我的公眾號。



Frida Hook的評論 (共 條)

分享到微博請遵守國家法律
大丰市| 九龙坡区| 乌兰县| 阆中市| 安义县| 根河市| 洪泽县| 防城港市| 景洪市| 韶山市| 雷山县| 十堰市| 县级市| 达尔| 邵阳县| 永平县| 孝感市| 荣成市| 洞头县| 贵州省| 锡林郭勒盟| 五家渠市| 山东省| 吉隆县| 镇安县| 白山市| 隆尧县| 乃东县| 临西县| 隆安县| 民乐县| 乌兰浩特市| 镇雄县| 乌兰察布市| 河北区| 竹山县| 临汾市| 沭阳县| 博兴县| 开平市| 承德县|