ShellCodeSample03.c에 대하여 질문이 있습니다.
안녕하세요 선생님 질문이 있습니다.
Sample03에는 WinExec , exit이 주석처리되어 있어서 선생님이 추가적으로 언급하신 함수의 주소 문제가 아닌것 같은데
'05_ShellCodeSample03.exe'(Win32): 'C:\Windows\SysWOW64\ucrtbased.dll'을(를) 로드했습니다.
0x298c 스레드가 종료되었습니다(코드: 0 (0x0)).
예외 발생(0xFFFFFFFF, 05_ShellCodeSample03.exe): 0xC0000005: 0xFFFFFFFF 위치를 실행하는 동안 액세스 위반이 발생했습니다..이런 에러가 떠서 기계어 숫자가 틀렸나 해서보니
밑줄에서 한 4개정도 가 달라서 수정하였더니 동작하였습니다.
#include <Windows.h>
void main()
{
char shellcode[] = "\x55\x8B\xEC\x83\xEC\x48"
"\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6"
"\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45"
"\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1"
"\x00\x70\x41\x00\xFF\xD0\x6A\x01\xA1"
"\xC0\x70\x41\x00\xFF\xD0";
char myshellcode[] = "\x55\x8B\xEC\x83\xEC\x48"
"\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6"
"\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45"
"\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1"
"\x00\xb0\xba\x00\xFF\xD0\x6A\x01\xA1"
"\x4C\xB1\xBA\x00\xFF\xD0";
// WinExec("", 0);
// exit(0);
//int *pShell = (int*)shellcode;
int* pShell = (int*)myshellcode;
__asm
{
jmp pShell
}
}해당 원인도 프로그램이 실행할때마다 ASLR 때문인것인가요? 궁금합니다
답변 1
1
함수 주소가 맞습니다. 다만 주석 처리한 WinExec(), exit() 함수를 한 번이라도 호출하도록 빌드해야 두 함수의 메모리 주소가 확실해집니다. 그렇지 않으면 링크되지 않아 아예 존재하지 않는 주소가 됩니다. 그리고 생각하신 것처럼 ASLR이 적용되면 주소의 위치는 계속 바뀝니다. (같은 주소가 나올 확율은 대략 1/256)
사실 좀 더 자세히 설명 할 것이 있으나 강의에서 다루지는 않았습니다. 리버싱 수업도 아니고 무엇보다 공격기법을 굳지 자세히 알릴 이유는 더욱 없기 때문입니다. 이미 알고 계시겠으나 이 예제는 공격 기법을 이해하고 대응하기 위한 취지라는 점을 잘 기억해주시면 좋겠습니다. 감사합니다.
병행성 제어
0
53
2
질문이 있습니다(강의와 거의 상관이 없는)
0
79
2
컴파일러 서적 질문입니다
0
165
1
코드생성 및 최적화 질문입니다
0
168
1
Hex Editor를 이용한 다국어 번역 관련 질문입니다
0
213
2
큐의 배열을 넘겨도 정상작동합니다
0
159
2
캐너리비트에 관하여 질문
0
220
3
상수화된 문자열에 질문있습니다
0
176
1
함수 호출 매개변수 전달에 대한 질문 드립니다.
0
195
1
단항 증감 연산에 따른 다른 접근에 대한 질문있습니다.
0
212
2
함수호출 규약 종류에 따른 장단점 여부
0
235
2
정적라이브러리 링크 오류
0
227
1
const char *를 char*에 초기화할때의 컴파일 에러 처리 방식 문의
0
359
2
pszParam 수정이 왜 Hello World print에도 영향을 미치는지 이해가 잘 안됩니다.
0
261
2
비선형 자료구조
0
314
1
자료 구조 공부 후에
0
357
1
강의자료 관련
0
254
1
마지막에 말씀하신 부분 질문드립니다.
0
216
1
문자열 관련 질문 드립니다
0
293
1
라이브러리
0
276
1
부동소수점
0
397
1
왜 변수 주소 사이에 offset이 있는 건가요?
0
307
2
stack 쌓는 순서
0
515
1
함수호출이랑 쓰레드
0
415
1





