본문 바로가기

리버싱

ABEX CRACKME 2

ABEX CRACKME 2는 비쥬얼 베이직 6.0으로짜여진 프로그램입니다

그리고 폼을 사용하는 프로그램이기떄문에

이렇게 코드의시작부분에서 폼을호출합니다

ABEX CRACKME 1과다르게 한줄한줄실행하기엔 너무오래 걸리기때문에 문자열의 위치를 이용하여 풀어야 합니다

아무코드나클릭 -> SERACH FOR -> ALL REFERENCED TEXT STRINGS를 클릭해 줍니다

 

그러면

이런창이 뜨게되는데 조금내려보면

이렇게 CONGRATULATIONS등 이있는데 우리의 목표는 CONGRATULATIONS!를 띄우는 것이기 떄문에

00403372 를 더블클릭 해줍니다

더블클릭하면 맞다는 내용의 메시지박스를 띄우는코드가 있고 위에는 분기문이 있습니다

저 JE문에 F2를 눌러 브레이크포인트를 걸고 네임과 시리얼에 아무렇게나 치고 CHECK를 누릅니다

그러면 분기문에서 멈추게 됩니다 그리고 코드를 보시면

JE문밑에는 맞다는 내용을 인자로 전달하여 MSVBVM60.RTCMSGBOX를 이용하여 메시지 박스를 호출하고 있고

403424를 보시면 분기문이 하나 더 있고 그밑에는 틀렸다는 내용의 메시지박스를 띄우게 하고 있습니다

그러면 우리는 첫번째 JE는 점프를 하지않고 2번째 JE문은 점프를 해야겠다고 생각할 수 있습니다

레지스터부분의 Z를 더블클릭하여 0으로 만들어 줍니다 그러면 점프가되지 않아

성공했다는메시지 박스를 띄웁니다

그리고 403424에서 Z를 더블클릭하여 1로 만들어 줍니다

그러면 틀렸다는 내용을 출력하지 않게 됩니다 이제 첫번째 분기문이 성공했다는 내용을 띄울것이냐를 판별하고

두번째 분기문이 틀렸다는 내용을 출력하는것을 알았으니 코드를 더 상세히 살펴보도록 하겠습니다

첫번째분기문의 위에보면 vbaVarTstEq를 호출하고있습니다

 vbaVarTstEq
- vbaVarTstNe
- vbaVarCmpEq
- vbaStrCmp
- vbAStrComp
- vbaStrCompVar

이것들이 vb의 문자열 비교함수인데 vbaVarTstEq도 포함되어 있으므로 정답과 입력한 값을 비교한다고 추측 할수있습니다

그리고 위에보면 edx와 eax를 인자로 전달 해주고 있습니다

스택창에서 컨트럴 + G 키를 눌러 EDX라 치고 엔터를누르면 이동이 되는데

밑에보시면

제가 입력한 PHOTOPHOTO와 B4ACB3B8과 비교한다고 추측 할수 있습니다

그럼 PHOTOPHOTO와 B4ACB3B8를 입력하고 CHECK를 눌러봅니다

그러면 코드 수정없이 성공했다는 메시지박스를 띄우게 됩니다

정리:제로플래그를 수정하여 풀거나 첫번재 분기문을 NOP으로 바꾸고 두번째 분기문을 JMP로 넘겨버리거나

인자로전달하는값을보고 시리얼코드를 알아낸다

crackme2.exe
0.02MB
crackme2_crack.exe
0.02MB

 

'리버싱' 카테고리의 다른 글

ABEX CRACKME 5  (0) 2020.07.04
ABEX CRACKME 4  (0) 2020.07.01
ABEX CRACKME 3  (0) 2020.06.29
ABEX CRACKME 1  (0) 2020.06.28