寫了一段代碼,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/
寫一個輸出樣本中所有函數起始位置和函數名的腳本: