리버싱2 3.1 바이트 오더링 바이트 오더링은 데이터를 저장하는 방식이다. 바이트 오더링 방식에는 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian) 방식이 있다. 아래 예제를 확인해 보자. BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abc"; TYPE Name SIZE 빅 엔디언 리틀 엔디언 BYTE b 1 [12] [12] WORD w 2 [12][34] [34][12] DWORD dw 4 [12][34][56][78] [78][56][34][12] char [] str 6 [61][62][63][00] [61][62][63][00] BYTE 타입인 b 변수를 저장하는 방법에는 차이가 없다. 그러나 2바이트 이상 저장하는 WORD.. study/리버싱 2021. 12. 17. 2.5 "Hello World!" 문자열 패치 0. 패치 패치 기능을 이용해 프로그램의 기능을 수정하거나 추가할 수 있다. 패치 대상은 파일, 메모리가 될 수 있다. 지금은 "Hello World" 출력을 바꾸어 보겠다. main 함수 시작 주소까지 실행합니다. 00401000부터 0040104E까지가 main 함수입니다. 1. 문자열을 패치하는 방법 두 가지 방법 문자열 버퍼를 직접 수정하는 방법 다른 메모리 영역에 새로운 문자열을 생성하여 전달 1) 문자열 버퍼를 직접 수정하는 방법 MessageBoxW 함수의 전달인자 4092A0의 문자열 ("Hello World") 버퍼를 직접 수정하는 방법이다. 그러기 위해 4092A0으로 이동해 보자[Ctrl + G]. 커서가 올라가 있는 window에 따라 뷰가 달라진다. dump window를 확인해 .. study/리버싱 2021. 12. 1. 이전 1 다음