国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python逆向入門教程

2020-02-16 11:37:37
字體:
來源:轉載
供稿:網友

1、開發環境

我們在Windows 10上開始python逆向之旅,首先開始搭建開發環境,python解釋器使用最新的3.6.1,IDE使用PyCharm社區版2017.1.3,下載地址如下所示,下載完成后直接雙擊安裝包安裝即可,隨后設置PyCharm的Project Interpreter為剛才安裝的Python解釋器就可以了。

【Python】https://www.python.org/downloads/
【PyCharm】http://www.jetbrains.com/pycharm/download/#section=windows

2、ctypes

首先介紹一下ctypes,它是一個用于Python的外部函數庫,提供了與C語言兼容的數據類型,允許調用動態鏈接庫或共享庫中的函數,還可以包裝這些庫。下面是ctypes中的數據類型與C語言、Python中的數據類型的對應關系。

ctypes中的數據類型全部通過class來實現,在Python中加載C庫涉及如下幾個類。

    class ctypes.CDLL 加載共享庫,使用標準C函數調用慣例即cdecl,返回類型為int。 class ctypes.OleDLL 加載共享庫,只用于Windows平臺,使用stdcall函數調用慣例,返回類型為HRESULT。 class ctypes.WinDLL 加載共享庫,只用于Windows平臺,使用stdcall函數調用慣例,返回類型為int。 class ctypes.PyDLL 類似于CDLL,與前面三個不同的是,在函數調用期間不會釋放GIL,Global Interpreter Lock。 class ctypes.LibraryLoader(dlltype) dlltype為CDLL、OleDLL、WinDLL、PyDLL,這個類有一個加載共享庫的函數LoadLibrary。

加載C庫更簡單的方法是使用如下幾個預先創建的類實例。

ctypes.cdllctypes.oledllctypes.windllctypes.pydllctypes.pythonapi

上面提到了函數調用慣例cdecl和stdcall,cdecl的意思是函數的參數從右往左依次壓入棧內,函數的調用者在函數執行完成之后負責函數的平衡,常用于X86架構的C語言里,返回值存儲在EAX寄存器中,從匯編代碼的角度來看,函數參數從右往左依次壓棧,然后調用函數,最后修改棧指針ESP為原來的位置。stdcall,參數傳遞的順序也是從右到左,不過棧的平衡處理由函數自己完成,而不是調用者,返回值同樣存儲在EAX中,也就是說,函數參數壓棧、函數調用之后沒有像cdecl一樣的棧指針ESP移動。

下面的例子在Python中調用C的printf函數,printf屬于“C:/Windows/System32/msvcrt.dll”,也就是Linux上的“libc.so”。

from ctypes import *msvcrt = cdll.msvcrtmessage = b"Hello World/n"msvcrt.printf(b"Message is %s", message)

上面的代碼輸出“Message is Hello World”。另外,ctypes還允許在Python中定義結構和聯合等其它高級功能,詳細介紹請參考https://docs.python.org/3.6/library/ctypes.html?highlight=ctypes#。

3、調試原理

使用調試器,能夠對程序進行動態跟蹤和分析,特別是涉及到exploit、fuzzer和病毒分析的時候,動態分析程序的能力就顯得非常重要了。調試程序時,如果可以獲得源代碼,調試起來就容易一些,也就是透明的白盒測試,如果沒有源代碼,也就是黑盒測試,想要得到理想的結果,那就必須擁有高超的逆向技術和逆向工具的幫助。黑盒測試包括用戶模式與內核模式兩種情況,兩者有不同的權限。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邢台县| 湄潭县| 咸宁市| 建昌县| 鸡泽县| 秦安县| 卢氏县| 九江县| 五家渠市| 万盛区| 津市市| 绿春县| 怀集县| 瑞丽市| 昌宁县| 巍山| 会宁县| 南康市| 利辛县| 太康县| 阜平县| 句容市| 沙坪坝区| 灵丘县| 肇庆市| 曲靖市| 临高县| 琼结县| 井冈山市| 上高县| 德化县| 樟树市| 桃园县| 平定县| 正安县| 晋中市| 大石桥市| 九龙县| 昌江| 昭平县| 长海县|