“行爲古怪”的IDA+腳本編寫

寫了一段代碼,main( )函數第一句就是int  3中斷調用:

#include <stdio.h>
#include <windows.h>


void func1()
{
	MessageBoxA(NULL,"消息1","提示",MB_OK);
}
int main()
{
	__asm int 3
	func1();
	return 0;
}

 編譯選項分別選擇禁用優化、完全優化,彙編代碼如下:

就發現這個0xCC無法解釋成int  3指令(莫非是函數的第一條指令??使用IDC的MakeCode( )函數也不行),在禁用優化的版本里面就可以解釋成int 3指令。

Windows系統庫ntdll.dll中有一個DbgBreakPoint( )函數中,int3指令也是函數的第一條指令 ,就可以修改成Unkn,再修改回來:

IDC函數可以在ida的幫助文件中找到:

IDAPython插件的API文檔放到了ida的官網:https://www.hex-rays.com/products/ida/support/idapython_docs/

寫一個輸出樣本中所有函數起始位置和函數名的腳本:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章