Security&Hacking/리버싱

Lena Reversing - tutorial 12

Dior2ky 2020. 3. 5. 20:06
반응형

Lena Reversing tutorial 12

이번 단계는 Teksched 프로그램을 여러군데의 패치를 통해서 크랙하는 단계이다.

그럼 프로그램을 실행한다.

맨처음 실행하면 나오는 창이다. 하단에 30일이 남았다는 문구가 보인다.

프로그램 실행 화면이다. 상단에 타이틀 끝에 unregistered 라는 문구가 보인다. 

help 탭의 about을 눌러준다.

Unregistered Version이 보인다. 

Use Reg Key를 눌러준다. 

Register 하는 창이 보인다. 

아무 값이나 넣어서 등록을 해준다.

역시나 오류창이 뜬다.

'Vg' 라는 값이 뜨는데 Key 값을 바꾸어 보니 또 다른 값이 나온다.

Key 값을 통해 변환을 하는 것으로 보인다.

 

 Ollydbg로 프로그램을 열어준다.

Search for -> All referenced text strings 를 눌러 문자열을 검색해본다.

등록과 관련된 단어인 regist를 검색한다.

원하지 않는 문자열이 검색되었지만 아래쪽에 Registration Key accepted!, Registration Key Failed! 라는 문자열이 보인다. 

더블클릭해서 들어가준다. 

두개의 문자열이 보인다.

그 위쪽의 내용을 살펴준다.

 여기서 익숙하지 않다면 이상한 부분이 보인다.

RETN이 보이고 그 아래로 분기해서 들어오는 부분이 없다. 

그렇다면 RETN 아래부분을 어떻게 통과하여 문자열 출력을 결정하는 것일까?..

답은 PUSH 004A5841에 있다. 

PUSH 후에 RETN이 이루어지게 되면 해당 주소로 unconditional jump 라는 것을 하게 된다. 

 

breakpoint를 걸어놓고 실행을 해보면 '__' is not a valid integer value 라는 창이 뜨며 breakpoint에는 걸리지 않는다.

이 조건을 먼저 해결해야 원하는 창이 뜨는 분기에 도달할 것으로 보인다.

All referenced text strings 에서 조금 올라가보면 Enter a Key value now..라는 문자열과 함께

그 위로는 값을 넣지 않았을 때의 문자열이 존재한다. 

Enter a Key value now.. 를 더블클릭하여 이동한다.

입력 오류에 대한 내용이 끝나고 분기하는 부분을 지나 다음에 나오는 내용에 breakpoint를 걸어준다.

여기서는 004A53E8이 된다.

이제 F8을 눌러가며 진행을 한다. 

진행을 하면서 분기가 되는 부분을 잘 수정하며 진행을 하며 원하는 결과가 나오도록 진행해야 한다.

진행을 하다보면 다음 CALL에서 ntdll로 넘어가는 것을 확인할 수 있다. 이곳을 NOP으로 바꾸어준다.

다시 실행하여 NOP으로 바꾸면 넘어가진다. 계속 진행하면 이번엔 아래와 같은 부분이 나온다.

그냥 진행하면 Error 문구가 있는 부분을 지난다. 

각각의 위에는 분기문이 존재하기 때문에 분기문에서 Z 플래그를 바꾸어 지나간다.

004A55ED에서 분기문을 통해 004A5608로 분기하고 004A5611에서 004A562C으로 분기하는 흐름이다.

이제 다시 쭉 진행한다. 진행하다보면 다음 분기문이 나온다.

분기문이 이동하는 004A585F는 이전에 찾은 regist 성공 부분을 지나치고 실패로 가는 분기이다.

따라서 이 부분의 Z 플래그도 변경해준다. 

쭉 진행하면 성공적으로 등록이 된 것을 확인 할 수 있다. 

패치를 진행할 때에는 NOP을 설정하고 Z플래그를 변경한 부분들을 고쳐 저장하면 된다.

004A55ED, 004A5611은 JMP로 바꾸어주고 004A567E는 NOP으로 고쳐준다. 

 

이제 프로그램을 실행하면 성공적으로 register가 된다.

끝.

반응형

'Security&Hacking > 리버싱' 카테고리의 다른 글

Lena Reversing - tutorial 14  (0) 2020.03.07
Lena Reversing - tutorial 13  (0) 2020.03.05
Lena Reversing - tutorial 11  (0) 2020.03.05
Lena Reversing - tutorial 10_3  (0) 2020.03.04
Lena Reversing - tutorial 10_2  (0) 2020.03.04