본문 바로가기

Reversing/Simples Creckme

Simples Crackme 18 Simples Crackme 18 - Question · 실행 후 확인해보면 숫자가 하나씩 올라가는 MessageBox를 확인할 수 있다. · 여기서 마지막 MessageBox의 숫자를 확인해 MD5 Hash 값으로 변환해야하는 문제이다. - Solve · Solve Sequence ◦ MessageBox의 숫자에 따라 종료가 결정되므로 MessageBox에 PUSH 명령어로 추가되는 영역의 주소를 찾는다. ◦ 숫자 값과 비교(CMP)하는 영역을 찾는다. ◦ 찾은 값이 맞는 값인지 PUSH 명령어로 추가되는 값을 비교대상 숫자와 일치시켜 확인해본다. · Solve Process ◦ OllyDbg를 통해 실행해보면 Packing되어 있다는 것을 확인할 수 있다. ◦ UPX를 통해 Packing을 해제시킨다.. 더보기
Simples Crackme 17 Simples Crackme 17 - Question · Message Box가 종료되는 시간을 구해 MD5 Hash 값으로 변환하는 문제이다.​ - Solve · OllyDbg로 실행시켜보면 경고창이 출력되는데 'code section is either compressed...' 즉 압축되어 있다는 것을 확인할 수 있다. · PEID로 확인해보면 EP Section이 UPX로 Packing되어 있다는 것을 확인할 수 있다. · UPX를 통해 Packing된 File을 해제시킨다. · OllyDbg를 통해 File을 실행해보면 정상적으로 실행되는 것을 확인할 수 있다. · 하지만 Debugging을 진행해보면 Debugging 탐지 API(IsDebuggerPresent)가 사용된 것을 알 수 있으며 따.. 더보기
Simples Crackme 16 Simples Crackme 16 - Question · Name Certlab에 맞는 Password를 찾아 MD5 Hash 값으로 변환하는 문제이다. · Name에 맞는 Password를 입력하면 'Good Job!'이라는 Message를 출력하고 맞지 않는 Password를 입력하면 'Wrong password!'라는 Message를 출력한다. - Solve · 'Search for → All referenced text strings'를 이용해 성공 Message과 실패 Message을 찾아볼 수 있다. · 성공 Message를 위쪽을 살펴보면 CMP, 명령어와 JNZ 명령어로 실패 Routine으로 이동시켜주는 역할을 하는 곳을 볼 수 있다. · Password를 생성하는 구간 찾기 ◦ Pass.. 더보기
Simples Crackme 15 Simples Crackme 15 - Question · 알맞은 Password를 찾는 문제이다. · 맞는 Password를 입력하면 'Bad Luck! Try again!'이라는 Message를 출력하고 'Well Done! You Cracked it!'이라는 Message를 출력한다. - Solve · OllyDbg를 통해 열어보면 'Unable to start file ...' 즉, File을 Debug 할 수 없다는 Error Message가 출력된다. · PEiD로 확인해보면 'Microsoft Visual C# / Basic .NET' 즉, .NET으로 만들어졌다는 것을 알 수 있다. · '.NET'으로 만들어진 Program은 '.NET Reflector'라는 Program을 통해서 Sour.. 더보기
Simples Crackme 14 Simples Crackme 14 - Question · Serial Key '154C-6505-D2ADD0F3-A223-2870'에 맞는 Name을 찾아 해당 Name을 MD5 Hash 값으로 변환하는 문제이다. · Hint ◦ Name이 두 자리 · 실행을 해보면 Program 상에서는 Name이 세 글자이상이여야 Serial을 확인할 수 있다. - Solve · 'Search for → All intermoduler calls'를 통해 Process 내에서 사용된 함수를 확인해보면 Windows API로 만들어진 함수라는 것을 파악할 수 있다. · 'Search for → All referenced text strings'를 통해 사용된 문자열을 확인해보면 오류 Routine 두 개의 Message.. 더보기
Simples Crackme 13 Simples Crackme 13 - Question · Key 값 구하기 · 성공 Message 대신 Key 값이 나오도록 HxD를 이용해 Patch - Solve · Key 값 구하기 ◦ Key 값은 쉽게 찾을 수 있는데 성공 Routine 바로 윗부분에 CMP 명령어를 이용해 값을 비교하는 부분이 있으며 여기서 Key 값이 '7A2896BF'라는 것을 알 수 있다. ◦ 16진수 : 0x7A2896BF → 10진수 : 2049480383 · 성공 Message 대신 Key 값이 나오도록 HxD를 이용해 Patch ◦ HxD로 열었을 때 위처럼 성공 Message 부분을 확인할 수 있다. ◦ 성공 Message 부분을 '2049480383'을 넣고 나머지 남은 부분을 NULL로 채운다. ◦ 수정할 주소.. 더보기
Simples Crackme 12 Simples Crackme 12 - Question · Nag창을 구상하는 OPCODE Byte 수 & Nag창을 없애기 위해 호출해야하는 API - Solve · Nag창을 구상하는 OPCODE Byte 수 ◦ OPCODE의 Byte는 두 자리씩 1Byte로 계산된다. ◦ OPCODE Byte 계산 ▹ OPCODE Byte : 2 + 5 + 5 + 2 + 5 = 19 · Nag창을 없애기 위해 호출해야하는 API ◦ Nag 창을 없애는 API 즉, OPCODE가 아닌 API를 호출해야하기 때문에 Nag 창이 없이 종료할 수 있도록 바로 종료하는 함수인 'ExitProcess'를 호출하면 된다. ◦ Nag창을 없애기 위해 호출해야하는 API : ExitProcess - Answer · 정답 : 19Ex.. 더보기
Simples Crackme 11 Simples Crackme 11 - Question · 알맞은 Serial을 찾는 문제이다. · 성공 시 첫 번째 Message 출력 후 두 번째 Message를 출력하지만 실패 시 첫 번째 Message와 Serial을 넣는 빈칸에 'Mal Cracker!!!'라는 문자열이 나타난다. - Solve · 'Search for → All intermoduler calls'를 통해 Process 내에서 사용된 함수를 확인해보면 vba 즉, Visual Basic으로 만들어진 Program이라는 것을 알 수 있다. · Process가 Serial을 인식하기 위해서는 비교 함수(vbaStrCmp)를 사용하며 Serial이 생성되는 지점도 비교 함수 위에 존재할 것으로 예상되기 때문에 비교 함수에 BP를 설정해.. 더보기
Simples Crackme 10 Simples Crackme 10 - Question · 알맞은 Serial을 찾는 문제이다 · Serial이 맞으면 'Rigth number !!!'이라는 Message를, 맞지 않으면 'Wrong C0d3'이라는 Message를 출력한다. - Solution · OllyDbg를 이용해 실행해보면 'IsDebuggerPresent'라는 함수와 CMP, JNZ를 이용해 Debug를 할 수 없도록 만들어 놓았다. · 함수 설명 ◦ IsDebuggerPresent ▹ Process가 Debugger에 의해 실행되면 0이 아닌 값을 반환 ▹ Process가 Debugger에 의해 실행되지 않으면 0을 반환 · 현재 Program이 Debugger(OllyDbg)에 의해 실행되어 IsDebuggerPresent.. 더보기
Simples Crackme 9 Simples Crackme 9 - Question · Name에 맞는 Secure Key를 찾는 문제이다. · Name을 다르게 할 경우 Secure Key가 달라지는 것을 확인할 수 있으며 따라서 Name에 맞게 Secure Key가 생성된 다는 것을 알 수 있다. · Secure Key가 맞는 다면 위와 같이 'You r too costly!'라는 Message를, 맞지 않는다면 'No no no no!Try more!'라는 Message를 출력한다.​ - Solution · 'Search for → All intermoduler calls'를 통해 사용된 함수를 확인하면 vba로 시작되는 함수들이 대부분이라는 것을 확인할 수 있으며 Visual Basic으로 만들어진 Program이라는 것을 알 .. 더보기