올리디버거
-
15 UPX 실행 압축된 notepad 디버깅리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 27. 02:31
notepad.exe의 EP code : notepad.exe를 OllyDbg로 open 010073B2 주소에서 GetModuleHandleA() API 호출하여 notepad.exe 프로세스의 ImageBase를 구한다 ImageBase : PE 파일이 로딩되는 시작 주소 GetModeuleHandleA() : 인자로 모듈 이름(dll,exe)을 넘겨주면 해당 모듈의 핸들, 베이스 주소를 리턴한다 성공시 핸들, 실패시 NULL 리턴 인자를 NILL로 전달하면, 호출 프로세스(.exe 파일)를 만드는 데 사용된 파일에 대한 핸들을 반환. 번외) GetModuleHandle(NULL)을 hinstance를 구한다고도 함 hinstance : 운영체제가 메모리에서 로드될 때 프로그램을 식별 위해 갖는 ID..
-
2 Hello World! 리버싱(2) - 문자열 패치리버싱 엔지니어링/리버싱 핵심 원리 2022. 2. 6. 22:49
2.5 “Hello World!” 문자열 패치 : “Hello World!” 문자열을 다른 문자열로 패치 문자열을 패치하는 두가지 방법 1) 문자열 버퍼를 직접 수정 main 함수 시작 주소를 BP 설정 후 실행 덤프 창에서 Goto 명령을 통해 "Hello World!" 문자열 주소로 이동 3. “Hello World”를 선택하여 Edit 다이얼로그 띄우기 [Ctrl+E] 4. ‘유니코드’ 항목에 원하는 문자열 입력 5. [F9]를 통해 실행 단점 : 기존 문자열 버퍼 크기 이상의 문자를 입력하기에는 어려움이 있음. 디버거 종료 시 사라지기 때문에 변경된 내용은 저장 필요. 2) 다른 메모리 영역에 새로운 문자열 생성하여 전달 더 긴 문자열로 패치해야할경우 1. 1번 방법과 동일하게 문자열이 있는 주소..
-
lena's reversing for newbies 01리버싱 엔지니어링/lena's reversing 2022. 2. 5. 01:06
1. 실행 reverseMe.exe 파일을 실행해보면 아래와 같은 메시지 박스 등장. 2. 디버깅 Ollydbg를 통해 reverseMe.exe를 디버깅 - 문자열 찾아보기 (Search for -> All referenced text strings) 실행했을 때의 메시지박스 문자열 확인할 수 있었고 "You really did it! Congratz !!!!" 문자열을 발견하여 클릭해서 가보니 메시지 박스로 출력됨. 따라서, 해당 메시지 박스를 출력하도록 수정해야함을 알 수 있음. 3. 코드 살펴보기 2번에서 처음 확인했던 메시지박스에서 확인한 문자열을 클릭하여 해당 코드 살펴봄. JNZ(=JNE) : 값이 같지 않으면 점프 메시지박스 출력 전 조건 분기문, 따라서 조건에 상관없이 점프하도록 수정 JN..