[*] 악성코드가 코드 인젝션으로 악성 행위를 하는 경우 인젝션된 코드를 확인할 때
(1) shellcode -> exe로 해주는 사이트를 이용
http://sandsprite.com/shellcode_2_exe.php
(2) 코드를 읽어서 jmp시켜 주는 간단한 CodeLoader 작성
- 첫번째 인자 : shellcode 파일
- 두번째 인자 : JIT위해 코드의 처음에 \xCC를 삽입 할지
[source]
#include "Windows.h" #include "stdio.h" #include "tchar.h" int _tmain(int argc, TCHAR* argv[]) { PVOID pCode; DWORD dwFileSize, dwRead; HANDLE hFile; if (argc != 3) { fputs("[*] Usage : < Program > < Code File > < \\xCC (y/n) >\n", stderr); exit(0); } hFile = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); dwFileSize = GetFileSize(hFile, 0); // 파일 사이즈 구하기 pCode = VirtualAlloc(NULL, dwFileSize + 1, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); //실행 권한이 있는 메모리 할당 ReadFile(hFile, (char*)pCode+1, dwFileSize, &dwRead, NULL); CloseHandle(hFile); if ((_tcscmp(argv[2], TEXT("y")) == 0) || (_tcscmp(argv[2], TEXT("Y")) == 0) ) ((char*)pCode)[0] = '\xCC'; //첫 바이트에 BP코드 \xCC삽입 else ((char*)pCode)[0] = '\x90'; //첫 바이트에 nop코드 삽입 __asm { jmp pCode; } return 0; }
'Reversing > Reversing' 카테고리의 다른 글
Ollydbg - Exception시 SEH 처리 확인하기 (0) | 2014.02.08 |
---|---|
64bit환경의 인자값 전달 방식 (0) | 2013.12.15 |
IDA로 C++ 클래스의 가상함수를 볼 때 (0) | 2013.12.15 |
IDA - 변수에 따른 데이터 영역 정리 (0) | 2013.12.14 |
무료 .NET Decompiler (1) | 2013.11.04 |