7.asm-shellcode 프로세스
셸코드를 쉽게 구할 수 있는 방법은 다음과 같습니다.
1. 다음과 같은 함수를 씁니다.
void __stdcall code(LONG &a,
LONG &b,
DWORD &c,
LONG &d,
DWORD &e)
입금 인코딩: 예:4
push ebp
mov ebp,esp
sub esp,14h
push ebx
push esi
push edi
mov dword ptr [ebp-4],0FFFFFFFFh
mov dword ptr [ebp-0Ch],0
mov dword ptr [ebp-8],0
mov dword ptr [ebp-14h],0
mov dword ptr [ebp-10h],0
pushad
mov eax,22E4CCh
int 0FFh
mov dword ptr [ebp-4],eax
mov dword ptr [ebp-0Ch],ecx
mov dword ptr [ebp-14h],edx
mov dword ptr [ebp-8],esi
mov dword ptr [ebp-10h],edi
popad
mov eax,dword ptr [ebp+8]
mov ecx,dword ptr [ebp-4]
mov dword ptr [eax],ecx
mov edx,dword ptr [ebp+0Ch]
mov eax,dword ptr [ebp-0Ch]
mov dword ptr [edx],eax
mov ecx,dword ptr [ebp+10h]
mov edx,dword ptr [ebp-14h]
mov dword ptr [ecx],edx
mov eax,dword ptr [ebp+14h]
mov ecx,dword ptr [ebp-8]
mov dword ptr [eax],ecx
mov edx,dword ptr [ebp+18h]
mov eax,dword ptr [ebp-10h]
mov dword ptr [edx],eax
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret 14h
기계코드로 변환:unsigned char *asm_code()
{
__asm
{
lea eax,__code
jmp __ret
}
// shellcode
__asm
{
__code://
//TODO
}
__asm nop// , int 3, 0xcc
__asm {__ret:}
}
4
int main()
{
unsigned char temp;
int i=1;
unsigned char* asm_p = asm_code();
FILE *fd = fopen("code.txt","w");
fprintf(fd,"unsigned char shellcode[] = \"");
while((temp = *asm_p) != 0x90)// , int 3, 0xcc
{
fprintf(fd,"\\x%.2x",temp);
asm_p ++;
if(i % 8 == 0) fprintf(fd,"\"
\"");
i ++;
}
fprintf(fd,"\";");
fclose(fd);
shellcode[]를 실행하면 코드에 배열이 있습니다.txt에서 체크 아웃일반적으로 호출 방법은 다음과 같습니다.
#define QSHELLCODE {0x55, 0x8b, 0xec, 0xcd, 0xff, 0x5d, 0xc3}
#define SHELLCODE_SIZE 0x7
4
PVOID m_pShellCode = VirtualAlloc(NULL, SHELLCODE_SIZE, MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
if (m_pShellCode)
{
byte ptr_shellcode[] = QSHELLCODE;
memcpy(m_pShellCode, ptr_shellcode,SHELLCODE_SIZE);
}
마지막으로 호출하는 방법은 두 가지가 있는데 하나는 다음과 같다.4
pfn_Q pfn = (pfn_Q)m_ShellCode;
pfn( );//
어셈블러:4
lea ecx, pfn
mov ecx, [ecx]
call ecx
물론 매개 변수가 있으면push 매개 변수부터
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.