0x.리버스 엔지니어링
-
0x00.CodeEngn Basic RCE 010x.리버스 엔지니어링/CodeEngn Basic RCE 2017. 7. 5. 15:56
0x00.CodeEngn Basic RCE 01 코드엔진에서 제공하는 첫 번째 문제를 풀어보도록 하겠다. 아무런 수정을 하지 않고 원본 파일을 실행 시켜보면, 이 창이 뜨고, 'not a CD-ROM DRIVE' 라는 안내창이 뜨면서 프로그램이 종료되게 된다. 여기서 우리는 간단히 GetDriveTypeA라는 API가 사용되었다는 사실과 00401026의 명령어가 실행된 후에 오류 메시지창이 안내된다는 사실을 알 수 있다. 그렇다면 가장 쉬운방법은 'Ok, I really think that your HD is a CD-ROM'이라는 문구가 있는 명령어줄로 점프를 뛰는 것일 것이다. 위와 같이 JE명령어를 JMP로 변경하였다. JE SHORT abexcm1.는 전에 실행된 명령어인 CMP EAX, ESI..
-
0x02.Hello Reversing 문자열 패치하기0x.리버스 엔지니어링 2017. 7. 4. 16:15
0x02.Hello Reversing 문자열 패치하기 리버싱 공부 2일차이다. 어제 공부했던 Hello Reversing이라는 창을 띄우는 프로그램을 패치해보도록 하겠다. 어제 찾았던 메인 함수를 찾아가서 라벨과 코멘트를 달 것이다. 코멘트는 초록색으로 보이는 것과 같이 표시되는데 ' ; ' 를 사용하면 되고, 라벨은 ' : ' 을 사용하면 된다. 이것들은 오른쪽 클릭 Search for -> All user comments, defined label을 클릭하면 아래와 같이 볼 수 있는데, 아주 편리하다.코멘트를 클릭하면 그 위치로 가기 때문이다. 그래서 분석을 할 때마다 주석을 남긴다. 메인함수 코멘트를 더블클릭하면 위치로 이동한다. F2 단축키를 클릭하여 401000 즉 메인함수의 시작부분을 베이스 ..
-
0x01.Hello Reversing 메인함수 찾기0x.리버스 엔지니어링 2017. 7. 3. 16:57
0x01.Hello Reversing 메인함수 찾기 리버스 엔지니어링 공부의 첫 날 ! 올리디버거(ollydbg)를 이용해서 Hello Reversing이라는 단어를 호출하는 프로그램의 메인 함수 위치를 찾아보았다. 찾는 방식은 CALL 명령어에 도달하면 F7을 사용하여 세부 내용을 본 뒤에 F9로 RETN으로 스킵하는 방식을 사용하였고, MessageBox 함수를 호출하여 아래와 같이 창이 뜨는 것을 확인할 수 있었다. 이 프로그램의 메인함수의 위치는 00401000이었다. 중간에 같은 함수를 루프를 돌아서 엄청나게 많은 시간을 소요했다. 역시 처음이라 그런건가? 아니면 내가 멍청해서 그럴수도..?? 계속 똑같은 부분이 반복되서 짜증이 나서 F9를 엄청 연타하였더니 갑자기 메인함수로 넘어갔다. (생각했..
-
0x00.어셈블리어 명령어0x.리버스 엔지니어링 2017. 6. 27. 15:03
0x00.어셈블리어 명령어 1) 기본 명령어 명령어 의미 INC 피연산자에 1을 더함 DEC 피연산자에 1을 뺌 ADD Destination에서 Source의 값을 더해 Destination에 저장 SUB Destination에서 Source의 값을 빼 Destination에 저장 MUL 부호 없는 al, ax, eax의 값을 피연산자에 곱함 DIV 부호 있는 al, ax, eax의 값을 피연산자에 나눔 MOV Source에서 Destination으로 데이터를 복사함 AND Destination과 Source 피연산자의 각 비트가 AND연산됨 OR Destination과 Source 피연산자의 각 비트가 OR연산됨 XOR Destination과 Source 피연산자의 각 비트가 XOR연산됨 TEST 두 ..