使用SEH实现跳转
這是一個(gè)很粗糙的demo,它的功能是添加了一個(gè)異常處理函數(shù)到SEH鏈表的頭部。然后觸發(fā)一個(gè)除零異常,跳轉(zhuǎn)到我們指定的函數(shù)中執(zhí)行。
沒(méi)有仔細(xì)研究SEH的工作原理,只是知道了有這么一種跳轉(zhuǎn)方式而已,詳細(xì)的內(nèi)容請(qǐng)看《加密與解密4》第八章內(nèi)容。
// SEH.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include <Windows.h>void fool() {MessageBoxA(NULL,"你(程序)已經(jīng)死了","看到我的時(shí)候",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; }總結(jié)
- 上一篇: 花指令——多个指令共用字节
- 下一篇: 进程线程创建过程