- Today
- Total
목록Pwnable (104)
Phantom
뭔지 모르겠어서 와업을 보러 갔는데 이게 문제라 한다 아이다로 열아봐야 겠다. 우선 Nag창을 구성하는 OPCODE 수는 6A 00 68 71 30 40 00 68 7C 30 40 00 6A 00 E8 07 00 00 00 = 19Byte 이 창을 없애려면 Push 0 다음에 NOP로 다 채우고 ExitProcess()를 넣으면 된다. 어쨌든 답은 19ExitProcess
뭔지모르고 프로그램을 실행하고 버튼을 누르니 저렇게뜬다. 무한 반복된다 프로그램을 열어봐야겠다. 비베로짜여져있으며 비교함수가 하나더라 BP를 걸고 실행해봐야겠다. Aaaa를 넣으니 바로 비교 숫자가 떴다. 와업을 보고나니 이게 답인듯 한데.. 뭔가찜찜하다. Simples.kr이 사라진건지 모르겠는데 홈페이지가 뜨질 않는다.
이번에도 시리얼 문제이다. 이름이 이게 자꾸 바뀐다 허허.. 아이다를 통해 열어보자 IsDebuggerPresent 함수를 실행하고 리턴값이 0이면 DialogBoxParam 함수를 실행한다 우선 IsDebuggerPresent 함수부터 알아야 겠다. 이 API함수는 디버깅을 감지하는 함수 인데, 디버거같은걸로 열린지 아닌지 탐지할 수 있는데, 디버거로 열리면은 1을 아니면 0을 반환 한 다. 이것은 억지로 0으로 수정한 후에 아래를 실행해야 한다 그리고 스트링을 검색하여 정답인 부분으로 가서 cmp문 근처에 BP를 건다 lstrlenA함수의 리턴값과 0xE를 비교한다. 길이가 14이어야 하나보다, 그래서 길이를 14로 맞춘 후 다시 실행했다. Lstrcpy와lstrcat함수로인해 VaZoNeZ가 두 번..
뭐이리 삽질을 자주하는지 모르겠다. 이번에도 네임과 시리얼을 찾는건데 와업에서는 이 값을 CRC32로 변환해 인증하더라 나는 뭔지도모르고 비교함수에 죄다 BP걸어서 값을 찾는데 네임이 자꾸 바뀌더라. 문제는 소스 키를 찾는 것 같다. 그래서 비교 함수에다 BP를 걸었다. 아무 많더라 마지막 vastrCMP에다가 걸고 디버깅을 했다. 클리어
계속 시리얼 문제인가 보다 PEID로 뭐로 짜여졌는지 확인 해야 겠다. 어셈이라 코드가 깔끔할 것 같다. 음….전의 문제와 비슷할줄 알았는데 전혀 모르겠다 WriteUp을 보고 풀긴 했는데 왜 보수를 취해야 하는지 뭐…어셈 명령어에 모두 N이 들어가기 때문 이란건 알겠는데..음… EDI+x가 되면서 하는게 한 문자 검사하고 다음 문자 검사하고 그런 것인가 보다 아무튼 보고 풀면 모두 and연산을 하며 JNZ로 점프를 하는데 모두 통과해야한다. 이 모두를 변환해야 하는데 우선 0AD가 뭘 뜻하는지는 모르겠지만 AD인거 같다. 16진수이니 이걸 2진수로 변환하고 보수를 취한다 보수는 아마…처음 AD부터 아스키에 걸리는게 없으니 바꿔보면 52 : Ascii – R이 된다. AD : 1010 1101 -> 01..
비베다..이번엔 이름과 시리얼을 매치시키는 것 같은데 아무렇게나 입력 후에 Check를 하면 없어진다. 그래서 우선 비교함수를 찾아 그 근처의 변수와 함수에 BP를 걸었다. 그리고 디버깅을 한다. 아이다보다 이뮤니티가 더 찾기 좋더라…이유를 모르겠다 허허… 바로 시리얼이 나왔다. 물론 아이다에서도 찾을 수 있다. 찾는 과정이 조금 힘들뿐…방법을 알면 이뮤니티에서 먼저 찾는게 더 빠르더라 방법을 잘 모르겠으나 어떻게 찾긴 찾았다 그리고 입력하니 성공했다.
이번에도 시리얼을 얻는 문제인가보다 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..