티스토리 뷰

버튼 비활성화 상태

일련번호는 보통 문자열비교를 하므로, Search for - All intermodular calls - "vbaStrCmp" 발견
BP설정

Test DI, DI 결과에 따라 점프문 분기.
여기서 ZF를 0으로 바꿔 흐름을 바꾸면, Register버튼이 활성화된다. 클릭하면 다음과같이 성공

 

[분석]

역추적하면,
TEST DI, DI는 DI값이 0인지 확인한다.
DI값은 EDI의 하위16bit값.
그리고 이 DI는 vbaStrCmp()의 결과가 eax에 저장된후 다시 edi로 복사된다.
vbaStrCmp()는 실행되며 인자로 eax, ecx를 넣는다.

 

vbaStrCmp()부분에 BP를 걸고 다시 살펴보자.
재시작후 숫자를 하나 입력하면 BP가 걸린다.
이때 위와 같이, eax엔 00670AFC가 ecx엔 00670B34가 들어있는 상태다.

eax=00670AFC에서 follow in dump를 통해, 해당위치에 내가 임의로 입력한 숫자인 '5'가 저장된것을 확인할수있다.

ASCII 35 = '5'

그렇다면, 비슷하게 ecx쪽을 보면 '2209710'이라는 unicode가 들어있다.
이 두 값을 vbaStrCmp()를 통해 확인후, eax-edi를 거쳐 분기가 나뉘는것이다.
BP를 제거하고 F9로 프로그램을 이어서 실행시켜 '2209710'를 입력해보자.
(재시작이 아님, 이어서 실행후 기존에 입력한 5지우고 2209710입력)

알맞은 serial값을 입력하자 자동으로 Registered버튼이 활성화된다.
클릭하면 역시 성공박스 출력.

* 프로그램 실행마다 serial값이 바뀐다. 재시작후 다시 unicode값을 확인해보면 다음과같이 '2219800'으로 이전과 다른것을 확인할 수 있다.

 

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

Reversing) abex crackme #5  (0) 2019.09.11
Reversing) MUP(Manual Unpacking)  (0) 2019.09.11
Reversing) DLL Injection with CreateRemoteThread()  (0) 2019.09.11
Reversing) abex crackme #3  (0) 2019.09.11
Reversing) abex crackme #2  (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
글 보관함