使用SEH实现跳转
這是一個很粗糙的demo,它的功能是添加了一個異常處理函數到SEH鏈表的頭部。然后觸發一個除零異常,跳轉到我們指定的函數中執行。
沒有仔細研究SEH的工作原理,只是知道了有這么一種跳轉方式而已,詳細的內容請看《加密與解密4》第八章內容。
// SEH.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include <Windows.h>void fool() {MessageBoxA(NULL,"你(程序)已經死了","看到我的時候",MB_OK);ExitProcess(0); }int _tmain(int argc, _TCHAR* argv[]) {__asm{push fool;push dword ptr fs:[0];mov fs:[0], esp;xor esi,esi;mov eax,dword ptr ds:[esi];}printf("異常處理完畢\n");__asm{mov esp, fs:[0];pop dword ptr fs:[0];}return 0; }總結
- 上一篇: 花指令——多个指令共用字节
- 下一篇: 进程线程创建过程