리버싱
- crackme(abexcm3) -
프로그램을 실행시키면 다음과 같이 메시지가 뜬다.
일단 프로그램을 올리디버거로 돌려보면.
처음엔 그냥 JE문만 바꾸서 옳은 출력문이 나오게 했는데 너무쉬워서 ... 뭔가 이상해서
생각을 해보니깐.
keyfile을 체크해서
키 파일을 찾았다 or 유효하지 않은 키파일이다 or 키 파일을 찾기 못했다.
이렇게 메시지 박스를 띄우는데
중간에 CreateFileA과 GetFileSize가 있는 것으로 생각해보았을 때
파일을 생성하고 파일의 사이즈를 가져온다는 것 같은데.
이게 실행시켰을 때 정상작동 되도록 하는 함수인 것 같다.
추측해보면.
파일을 만들고
파일의 크기를 비교해서 정확한 키파일을 찾는다.
로 생각해볼수 있다.
빨간 네모 박스에서 파일을 만들어내고 CMP로 비교후 점프하는 것으로 보인다.
근데 여기서 FileName 이 abex.12c로 생성되는 것이 나와있다.
(처음엔 그냥 강제로 파일을 만들어 주었는데 나중에 찾아보니 PUSH 3값을 4로 바꾸면
항상 파일을 만들어 주는 변수로 변경할 수 있다고 한다.)
일단 파일이름이 abex.12c로 되어있으니 강제로 파일을 만들어 주었다.
아래 빨간 박스를 보면 파일 사이즈를 가져와서 CMP하고 일치하면 JNE(jump not zero)하는데
비교하여 0일 경우 그대로 실행해서 Yep, keyfile found를 띄우고
0이 아닐경우에 00401060으로 점프해서 Error를 띄운다.
CMP EAX, 12로 보아 파일 사이즈를 12와 비교하는 것 같다.
파일사이즈를 12 바이트로 바꾸고 실행해보았다.
바꾸고 실행하였더니 유효하지 않은 키파일이라고 나온다...
실수로 10진수로 생각을 해서 오류가 남.
16진수 12는 10진수 18이라 파일크기를 18바이트로 바꾸고 실행하니
성공


댓글 없음:
댓글 쓰기