python常用api_[原创]IDAPython常用API整理
IDAPython常用API整理:通過一些腳本和《IDA Pro權威指南》,查閱官網的IDAPython API整理,不算很多,有待增添。
idaapi.MinEA():獲取載入程序的最小的有效地址。
idaapi.MaxEA():獲取載入的程序最大的有效地址。
idaapi.get_inf_structure():獲取當前打開的IDA的版本的信息,返回的是一個結構體,貌似是idainfo。
idainfo.is_32bit(), idainfo.is_64bit():判斷IDA是32位的還是64位的,也就是可以通過上面的接口獲取再調用,直接import idainfo是沒有用的。
idaapi.Assemble(head, line):從head地址開始反匯編,尋找直到遇到line這條指令時停止,返回兩個變量,一個表示是否成功,另外一個是最后這條line指令的字節表示,例如:ret就會是'\xc3'這一個字節來表示,有些指令可能由多個字節表示。
idaapi.GetMnem(addr):獲取addr地址處的指令。
idaapi.MakeCode(addr):從addr地址開始嘗試將數據轉換為匯編代碼。
idaapi.next_not_tail(addr):往下走一個指令,如果不是尾部,則返回下一條指令的起始地址。
idaapi.GetDisasm(addr):獲取addr地址開始的一條匯編指令。
idaapi.GetFlags(addr):獲取addr地址處的一系列標志位,可用來判斷屬于code還是data。
idaapi.isCode(Flags):通過Flags判斷是否是匯編代碼。
idaapi.MakeUnkn(addr, size):取消對addr地址處的size大小的定義,暫不清楚該地址是代碼還是數據時可以使用。
idaapi.GetOpnd(addr, index):取addr地址處的指令的第index個操作數,從零開始,從左開始,依次為intel匯編語法中的目的操作數、源操作數。
idaapi.get_name_ea(min_ea, name):從min_ea地址開始,尋找名為name的有效地址,該name可以為函數名、label名。
idaapi.get_dword(addr):從addr地址處獲取一個dword數據。
idaapi.MakeDword(addr):將addr開始的一個DWORD大小的數據定義為雙字形式,舉一反三,Q代表四字節數據,API形式一致。
idaapi.Segname(addr):得到addr地址所處的區段名。
idaapi.MakeFunction(addr):將addr地址處定義為一個函數,相當于快捷鍵P。
BADADDR: 常量,代表錯誤的地址。
idaapi.GetSpd(addr):獲取addr地址處的棧指針SP的值,而在IDA中顯示的值則是SP到BP基址針的差值,例如獲取到的值為-4,在IDA中顯示棧指針的情況時則為4。
idaapi.SetSpDiff(addr, diff):設置addr地址處的Sp指針與Bp指針的差值,在平衡堆棧時需要用到。
idaapi.next_head(head, BADADDR):遍歷下一條指令,除非遇到BADADDR,返回下一條指令的地址。
idaapi.ua_mnem(addr):返回addr地址處的指令類型。
idaapi.MakeName(addr, ''):給addr地址處一個標記label。
可能整理得不是很好,如果大佬發現錯誤的話,請指出!
最后于 2020-4-14 22:35
被Spwpun編輯
,原因:
總結
以上是生活随笔為你收集整理的python常用api_[原创]IDAPython常用API整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab cell计算,MATLAB
- 下一篇: python字典值求和_Python两个