[*] 악성코드가 코드 인젝션으로 악성 행위를 하는 경우 인젝션된 코드를 확인할 때
(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 |
CodeLoader.exe