Reversing/리버싱_핵심원리

11장 Lena's Reversing for Newbies

dcho 2019. 8. 14. 03:10
SMALL

먼저 프로그램을 실행시켜 보았다.

목표는 2가지이다.
  • 모든 성가신 Nags(잔소리?)를 없애라.
  • registration code 코드를 찾아라!


우선 디버거로 프로그램을 까보았을때는 다음과 같다.


스트링 검색으로 성공부분을 따라 들어가 main부분을 찾았다.

이제 여기서부터 빠르게 리버싱을 해보면 될것같다.

메인을 시작하면서 바로 요놈 듣기 싫은 잔소리가 뜬다. 먼저 요놈부터 퇴치해야지!

아까 Visual Basic 코드 부분에서 메세지 박스 호출 부분을 조작할건데 MSVBVM50.rtcMsgBox 를 조작할것이다. 

디버거에서 마우스 우측 버튼 메뉴의 Search for - All intermodular calls 명령을 사용하면, API 호출 목록이 나타나는데 우리가 찾는 rtcMsgBox는 총 4개 호출된다.여기에 모두 브레이크포인트를 걸어 확인해본다.

조금 올려다 보니 첫부분에서 잔소리를 하는지를 파악할 수 있었다.


이 부분에서 해당함수의 프롤로그에서 리턴을 해버리면 잔소리를 더이상 듣지 않아도 된다.

메인을 실행해 "123456" 을 값을 넣어주었다.

코드를 보다가 이부분에서 입력값을 스택에 넣고 "I'mlena151" 도 스택에 함수 파라미터로 들어가는 것을 볼 수 있다.
__vbaStrCmp() API는 VB에서 문자열을 비교하는 함수이므로 즉, 내 입력값도 저 값을 비교하는 것을 알 수 있었다.




'Reversing > 리버싱_핵심원리' 카테고리의 다른 글

10장 함수 호출 규약  (0) 2019.08.14
9장 Process Explorer - 최고의 작업 관리자  (0) 2019.08.14
8장 abex` crackme #2(미완)  (0) 2019.08.14
7장 스택 프레임  (0) 2019.08.07
6장 abex' crackme #1 분석  (0) 2019.07.25