반응형
hyunmini 님이 쓰신 윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇
쉘코드 만들기 따라하기
cmd를 실행시키는 c 코드 작성
디버그 모드를 이용하여 어셈블리어 확인
불필요한 코드 제거 후 어셈으로 재코딩, 함수의 주소는 따로 찾아내야한다.
어셈코드 작성 후 디버그 모드에서 바이트 코드 확인
바이트 코드로 코드 재작성
DEP 해제 후 컴파일
cmd 뒤에 0을 넣어주는 것 때문에 byte ptr [ebp-1], 0 부분에서 \x00(null 바이트)가 발생함.
null 바이트 제거를 위하여 byte ptr [ebp-1], 0 을 xor ebx, ebx mov dword ptr [ebp-4], ebx 로 대체.
ebx 값을 불러오기 위해서는 4바이트(dword)가 필요하고 dword를 사용할 경우 byte ptr [ebp-1]의 위치에 0을 넣기 위해서 dword ptr [ebp-4], 0 을 하면 같은 위치에 들어감.
이후 나머지 3바이트를 cmd로 덮어씌우면 cmd\0 가 그대로 들어가게 된다.
널바이트를 제거한 쉘코드가 정상적으로 실행된다.
반응형
'(구) 개발창고 > Windows' 카테고리의 다른 글
[Intel Pin] Branch Observation Tool (0) | 2018.07.31 |
---|---|
안티디버깅 API 우회 및 코드패치 (0) | 2017.06.26 |
[Windows] 윈도우에서 디렉토리의 파일 갯수 세기, 파일 이름 보는 프로그램 (0) | 2014.12.30 |