티스토리 뷰

Help_About

Help_Register

아무값이나 입력하면 다음과 같은 창이 뜬다.

Register창이 뜨는부분에 breakpoint를 걸고 따라가보았다.

메인코드

CALL DialogBoxParamA()함수를 통해 Register창을 띄우고
값을 입력한뒤 돌아오면 위의 상태이다.
ASCII로 내가 입력한 값이 들어가있는것을 확인할 수 있다.

회색 음영라인에서 CMP비교후 JE 점프문에 의해 분기가 나뉘는게 보인다.

분기가 나뉜후, CALL하는 두 MessageBox


물론, 분기가 나뉘는 부분에서 점프문or플래그를 패치하면 다음과 같은 창을 볼 수 있긴하다.

좀더 자세히 프로그램이 원하는것을 알아보자.

그런데 여기서 name과 serial값 모두 스택에 넣고 어떠한 주소를 call하는 과정을 거치는것을 발견할 수 있다. 두 곳을 따라가보자

1) name을 스택에 넣고, 호출한 0040137E

1) 0040137E

(Olly의 주석과 함께 보며 이해할것)
esi에 입력한 name을 넣는다.
이후, 401383~40139A의 loop이 있다.
al에 esi=name의 한바이트만 가져와 넣는다. (al은 eax의 마지막2byte)
al이 0인지 확인하고(마지막문자인지 확인하는것) 그렇다면 loop탈출
cmp~jb: al<'A'면 경고창을 띄우고 retn
cmp~jae: al>='Z'면 al에서 0x20을 빼고 loop시작으로(다음글자 반복)
                 al < 'Z'면 아무것도안하고 그냥 loop시작으로(다음글자 반복)
(여기서 영어 알파벳만을 통과시키는 함수를 만든것같으나, esi가 계속 증가하는 바람에 한글자당 loop이 한번만 돌아 제대로 동작하지않는것으로 추정. 예를들어 b라면 0x20을빼서 B가 되지만, ^의 경우 >로 바뀌고 다음글자로 넘어가버림. 즉 필터링이 제대로 되지않음)
정상적으로 loop을 나왔다면,
모든 문자의 합을 loop을 거쳐 edi에 넣고, edi와 5678을 XOR해 eax에 넣고 리턴한다!


2) serial을 스택에 넣고, 호출한 004013D8

2) 004013D8

역시, eax=edi=ebx=0으로 초기화해주고
esi에 serial을 넣어준후
loop안으로 들어간다. loop을 한줄로 정리하면,
edi = edi X '0xA' + (serial[i] - '0x30')을 반복하는것이다.
이 과정을 통해 16진수로 변환할수있다. (ex. 12->C)
이후 loop을 나와서
edi(16진수로 바꾼 serial)와 1234를 XOR해서 ebx에 넣고 리턴한다!

1), 2)를 거쳐나온후, 각각에서 구한 eax==ebx라면 목표로 분기된다.
sum(all char of name)^5678 = 0x(serial)^1234 이어야하는데, XOR은 2번하면 원복되므로
serial = sum(all char of name)^1234^5678
         = sum(all char of name)^444C 로 공식을 만들수있다!

간단히, name을 a로 한다면
a의 hex값인 41과 444c를 XOR시킨 440d를 10진수로 표현하면 17421이다.
이제 name으로 a를, serial로 17421을 입력하면 성공창이 뜬다. 끗

 

참고자료

[ CMP & JB,JAE... ]
http://baeknamu.com/27
https://m.blog.naver.com/PostView.nhn?blogId=s2kiess&logNo=30181286411&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

[ ASCII ]
https://ascii.cl/

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

Reversing) abex crackme #3  (0) 2019.09.11
Reversing) abex crackme #2  (0) 2019.09.11
Reversing) 기본 C문법 리버싱 (if문, for문)  (0) 2019.09.11
Reversing) FSC_Level 1  (0) 2019.09.11
Reversing) abex crackme #1  (0) 2019.09.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함