- Today
- Total
목록분류 전체보기 (300)
Phantom
이번에도 시리얼을 얻는 문제인가보다 PEID로 보니 C++이다 그래서 IDA로 보니 어마어마 하다… 헥스레이로 돌려 보니 저 아래에 2140661100을 봤어야 하는데 위에 것 만보고 생고생을 했다. 부주의맹시..보고 싶은 것만 봤다. 분석을 따로 할 필요 없이 바로 저 값을 보고 값을 집어 넣으니 . 바로 답이 나왔다 참…좋은 도구이다 IDA..생고생했는데.. 그리고 Crackme가 20까지 있는 줄 알았는데 이게 simples.kr crackme 1번이더라 허허…
이번에도 시리얼을 찾는 문제인 것 같다. 어셈으로 만들어졌다. 그래픽 뷰로 보니 이것이 전부이다…우선… 각각의 함수를 알아봐야겠다. GetModuleHandle 함수는 lpModuleName에 해당하는 모듈이 프로세스 주소공간에 매핑되어 있다면 해당 모듈의 핸들을 반환한다. 그리고 DialogBoxParam 함수는 대화상자를 만드는 함수인데 IParam매개변수를 추가한것이라 한다. 이 함수 안에 들어가보니 lstrcmpia 함수가 문자열을 비교한다. 이 함수에 BP를 걸고 A를 입력하니 비교 문자인 시리얼이 나오더라 그래서 따로 프로그램을 실행시켜 저 값을 넣었더니 값이 맞았다. 처음으로 빠르게 WriteUp을 안보고 푼 문제가 되었다
Crackme 4는 또 비베인가보다 아 비베 싫다 그런데 이번 문제는 은근히 쉽더라 아이다에서는 잘 되지 않았는데 이뮤니티에서 아주 쉽게 가능했다 아이다에서도 값은 맞았으나 Register버튼이 떠오르지 않고 비교함수만 무한반복했다. 자 우선 프로그램을 실행 해보자 시리얼을 알면 Registered 버튼이 활성화 되는 것 같다. 우선 비베엔진 시작에 BP를 걸고 F7로 들어가 보겠다. 그리고 CrackMe 2에서처럼 OEP??음..모르겠다 암튼 정식적으로 프롤로그가 되기 전에 View-String을 보면 실행되는 함수를 찾을 수 있다. 스트링 비교함수인 vbaStrCmp에 BP를 걸고 들어가 보겠다. 그리고 a를 입력 했다. 바로 vbaStrCmp함수실행 직전으로 오더라 그리고 eax와 ecx를 넣고 비..
프로그램을 실행하니 클릭하여 키 파일을 체크하란다. 음….키 파일을 찾을 수 없단다. 그러면서 프로그램 종료….. ?!!! 고로 우리는 키 파일을 찾아야 한다는 것인데 역시 안을 들여다 봐야겠다. 이게 프로그램의 전체 모습이다. 처음 메시지박스함수 다음 CreateFileA함수의 인자 값들이 궁금하다. 그래서 msdn에 검색을 했는데… CreateFileA("abex.l2c", 0x80000000, 0, 0, 3, 0x80, 0); 이것인데 뜻이 뭐냐하면 HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_opt_ LPSECURITY_ATTRIBUTES lpSecur..
이름과 시리얼을 입력하고 체크를 누르면 성공 또는 실패가 되는 문제이다. 은근히 간단하더라. 이제 익숙해져서그런가..하하 우선 아이다에 올려서 보려 했으나 그래픽뷰가 먹히질 않는다 그리고 오히려 이뮤니티가 더 편한기분이랄까 그래서 이뮤니티로 풀어보려 한다.. 먼저 VB머신 들어가기 전에 분기문을 찾으려 문자열을 검색했더니 있다. 아무거나 들어가서 그 위에 비교함수나 명령어가 있는지 알아봐야 겠다. 비교함수가 딱 한가지 있더라. 이 함수와 위의 인자 두 개에 BP를 걸고 F9를 누른다. 두 개의 인자를 받고 vbaVarTstEq함수를 실행한다. 그리고 JE명령어를 통해 성공 또는 실패 분기문으로 들어간다. JE를 수정해서 원하는 곳으로 가도 되고 ZF플래그를 조작해도 되지만 원하는 건 시리얼 값이다. 그래..
리버싱의 처음을 대표한다고 해도 모자라지 않을 abex crackme 1 이다 이것을 나도 처음 리버싱을 배울 때 풀어 본 적이 있다. 그리고 아주 잠깐 어떤 스터디를 들었는데 거의 리버싱 스터디였다. 난 견디지 못하고 나왔다. 그 때 당시 이제 레지스터를 익히는 중 이고 함수 프롤로그 에필로그 등등 메모리의 기초를 익힐 때라 정말 힘들었다. 그러다 어쩌다 줏어 들었던 EAX값이 5여야 원하는 방향으로 분기가 된다는 것을 들은 것이 전부이다. JMP 방식도 알긴 하는데 다 적어볼까 한다 우선 프로그램을 실행 해보자 음…하드를 CD-Rom으로 인식하게 하라고 하며 CD-Rom이 아니라며 시무룩해한다. 디버깅 툴로 자세히 살펴보려 한다 ida를 사용 했다. 여태 gdb만 사용하다가 이것을 사용하니 처음엔 조..
프로그램을 클릭하면 이렇게 뜨면서 종료한다. 보아하니 keyfile이 없어서 에러라 뜨는 것 같다. 디버거로 열어보자 보아 하니 CreateFileA함수의 리턴값으로 아래 JE문에서 분기가 일어나는 것 같다. CreateFileA함수에 대해 알아봐야 할 것 같다. CreateFile 함수에 대한 자세한 것은 여기로 함수의 인자 중에 Mode에서 OPEN_EXISTING으로 되어 있다. 존재하는 파일을 연다는 것이다. 그리고 호출 된 후 eax를 비교하는 것을 보아 리턴값만 알면 될 것 같다. 함수가 리턴에 성공하면, 리턴값은 특정 파일이나 디바이스, 이름있는 파이프, 또는 메일 슬롯의 열려있는 핸들값이 된다. 영어 맞나..? 나는 파일이 없으므로 -1을 리턴하고 같으므로 JE에서 에러로 향한다. 그럼 파..
네임과 시리얼을 넣고 Check를 누르면 맞는지 안맞는지를 나누는 프로그램 같다 디버거로 열어보자 비주얼 베이직으로 만들어진 프로그램들은 이 엔진을 사용한다 그래서 이 안으로 들어가야 한다. 우선 여기서 문자열들을 보니 이렇게 되어있다. 비교하는것이 어떻게 되어있는지 몰라 찾아보니 vbaVarTstEq함수가 문자열 비교 함수인 것 같다. 여기에 BP를 걸고 들어가봐야 겠다. 함수 콜되기 전에 인자 넣는곳에다 BP를 걸고 했는데 스택 근처에 문자열이 보인다, 그리고 아래에 다른 문자열도 보인다. 혹시 Phantom의 시리얼 값이 "B4CCC5D2"는 아닐까 해서 한번 값을 넣어봤다. 맞는 것 같다.
CrackMe 1번을 실행하면 다음과 같이 뜬다. CD-Rom처럼 인식하게 만들라고 한다. 우선 디버거로 열어봐야 할 것 같다. 이 문제에서 핵심은 GetDriveTypeA같다. 실행 해보니 리턴값으로 3을 준다. 이 값이 무엇을 의미하는지 알아보자. 지금 리턴값의 3은 HDD로 인식했다 우리가 인식하게 해야할 값은 5번이다. 애석하게도 내 PC에는 cdrom이 없다. 그래서 리턴하고 난 다음에 값을 5로 조정할 것이다. 에…..5로 바꿔도 되지가 않네 마지막에 왜 401003과 3을 비교하는건지 이해가..ㄷ 결국 401003으로 바꾸고 실행했다. Clear!!
프로그램을 실행하면 이런 모습이다. 여기서 아무런 값을 입력하면 패스워드가 틀렸다고 나온다. 패스워드 값을 찾는 것이 이 문제의 답인 것 같다. 디버거로 열어서 문자열을 찾는다. 문자열들에게 BP를 걸고 한번 Congratulation으로 이동해본다. 우선 보이는 점프문 근처에 모두 BP를 걸었다. 아스키 문자열이 보이는데 저게 비교 문자열인 것 같다. F9를 눌러 진행한다. 이 부분에서 걸렸는데 ESP+5와 61과 비교한다 61은 a이다. 여기서 +5는 "h"를 의미한다 값이 틀렸네. 아래 JNZ를 만나 바로 메시지박스 함수로 오게 된다. 두번째 값은 a이다. 다시 실행하여 값을 집어넣는다. 2를 push하고 pa다음인 antom과 5y를 push한다. 아마도 현재로서는 –a5y-----인 것 같다. ..