最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
社会| 柳河县| 洪雅县| 丰镇市| 太白县| 昭通市| 资阳市| 丹凤县| 洛南县| 资讯 | 迁安市| 理塘县| 施秉县| 藁城市| 南康市| 赣州市| 根河市| 三台县| 礼泉县| 通辽市| 错那县| 勃利县| 凤山市| 建瓯市| 加查县| 潍坊市| 商丘市| 应城市| 磴口县| 吴旗县| 长海县| 马公市| 永州市| 肥城市| 南丰县| 衡水市| 江安县| 安图县| 葵青区| 章丘市| 义马市|