본문 바로가기

reversing/리버싱

(11)
CFF CrackMe2 시리얼 문제 해봅시다~ 하나는 원본. 하나는 전 포스팅에서 언패킹한 exe파일입니다. 일단 실행한다음 (F9) 아무거나 에디트박스에 넣고 버튼을 눌러줍니다. 그러면 You are a bed cracker!라는 문구가 뜹니다. 우리는 이 메시지 박스가 어디에 위치하는가를 알아야 하는겁니다. exe파일에서 text는 한곳에 올라오기 때문에 메시지 박스에 들어가는 텍스트와 시리얼키가 같이 있다는거죠. 잘 모르시겠으면 PE구조를 공부하세요. 위의 상태에서 F12를 해서 Paused 상태에서 alt+F9를 눌러준다. 그다음 위의 메시지 박스의 확인을 눌러준다. 그러면 지금 상태의 메모리를 보여준다. 위로 살짝 올려주면 메시지 박스의 원형을 보여준다. 위에 빨간글씨로 MessageBoxA로 써져잇는 함수가 보인다. 그리고 매개변수인 st..
패커, 패킹, 언패킹 패커(Packer)에 대해 다시 한번 간단히 정리 패킹(packing)은 실행파일 포장이라는 개념으로 쉽게 이해하시면 될 것 같습니다. 아래 그림은 파일이 패킹되어 메모리에 올라가는 일괄의 과정을 표현한 것으로서 패킹된 파일은 메모리 할당시 재배치(Relocation) 과정을 하지 않기 위해 target 프로그램과 동일한 위치에 .txt 섹션을 배치 합니다. Uninitialized data section은 언패킹 후 메모리에 올릴 장소입니다. 언패킹을 하기 위해서는 먼저 Packer Detection(탐지)을 통해 패커를 확인하는 작업이 선행되어야 합니다. 패커를 확인하는 가장 손쉬운 방법은 잘 알려진 패커 탐지 tool을 이용하는 것이며 탐지 tool로는 PEID, DIE, RDG, exeinfo P..
나의 첫번째 디버깅 Hello world! 사실 리버싱은 할 맘이 없었는데..;; 왜하고 있는거지?-0-? OllyDbg 사용법 보다가 리버싱 하는거 보길래 잼있길래 해봤는데... 코딩하는게 쉽다는걸 느끼는 하루다;; Hello world 바꾸는데 5시간이 걸렸따.;;ㅋㅋㅋㅋㅋ 일반적인 hello world! 를 프롬포트 창에서 찍어내는 프로그램. 정말 오늘로써 C언어가 정말 쉽고 잘만들었단는걸 알게 해주는구나;; 리버싱하면서 난감한점은 그동안 우리가 익숙하게 썼던 printf가 어디에 속하느냐 이다. 물론 stdio.h에 있다고 하겠지만 결국 헤더파일도 지침서일뿐이다. 이것이 프롬포트창에 단순히 문자를 찍는데 필요한 파일들이다. 지금은 각 dll 파일들의 PE구조일 뿐이고. 여기서 MSCVR90.dll이 printf 함수가 속에있는 파일이다. ..