리버싱
-
CodeEngn(Basic) crackme15 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 9. 04:51
15 풀이입니다 이제 이거하고 자야지 히히 일단 아무거나 입력하고 Check 버튼 누르면 요래 나오네요 PEiD로 일단 패킹 여부 확인해주고요, 암것도 없으면 디버깅합시다 어라 근데 뭔가 코드가 허접하네 그럴때는 저기 그 뒤에 텍스트 문자열 알려주는 기능 있죠 referenced text strings 찾아오셔서 아랫쪽 뭐라뭐라 길게 하는 말 있어요 그거 들어가서 보면 성공 화면에 뜨는 문자열이거든요 그니까 그 위에 분기문에서 BP 걸고 실행시켜봅시다 Name은 CodeEngn으로 한 뒤에 시리얼값은 아무거나 넣어봐요 EAX 값과 45B844 덤프값을 비교해서 그걸로 성공화면 띄우는 거 같네요, 지금 EAX 값은 아마도 123456의 DEX 값이 아닐까 싶구요 맞죠? 그럼 45B844 덤프값에 들어가서 ..
-
CodeEngn(Basic) crackme14 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 9. 04:09
크랙미 14 풀이입니다, 맘 제대로 먹고 이제 공부 제대로 해야죠,, 문제부터 보자면, 시리얼값 구하는 문제네요. 딴거 아니니 편해보이지만 bruteforce가 뭘까요 ..무차별 대입 공격? 그냥 아무거나 대입해야 하나요? 우선 실행창이구요 아무거나 입력했을 때 나오는 화면 또 패킹돼 있길래 뭘로 됐는지 싶어서 PEiD 열고 UPX 패커 확인했으니 언패킹해주고 디버깅해보면 굉장히 깔끔해보입니다 정렬돼있니 보기 좋네요. 쭉쭉 내리다 보면 성공화면과 실패화면으로 나뉘는 분기문 CMP와 JNZ를 볼 수 있습니다. 따라서 CMP 명령에 BP를 걸고 실행시켜줍시다. * 참참 이 프로그램은 입력된 Name 값에 따른 Serial 값의 변화를 볼 수 있는데, 이는 디버깅 과정에서 보나 대입하는 과정에서 보나 위에 N..
-
CodeEngn(Basic) crackme13 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 5. 23:55
코드엔진 베이직 크랙미 13 풀이입니다 오늘은 15까지만 해야지 ^~^ 일단 실행화면입니다 근데 cmd창..? 좀 어색ㅋ하네요 올리디버거로 디버깅이 안되서 PEiD로 확인한 결과 C#으로 작성된 프로그램임을 알 수 있네요. 그러면 올리디버거가 안되죠, 그 뭐냐 디버거 말고 디컴파일 프로그램을 가져와야 해요. .NET Reflector 쓰려다가 저는 JetBrain이 좋아서 Jetbrain dotpeek을 쓰기로 했어요 왜냐면 .NET Reflector 뭔가 사용법이 어려워보였거든요. 닷픽은 깔꼼하니 좋죠. 그래서 이게 그 크랙미 C# 코드구요, 뭔 개소린지 하나도 모르겠지만 뭔가 오른쪽 코드에서 왼쪽 코드의 클래스를 참조해서 암호화나 복호화된 문자열을 str값과 비교하는 것 같아요. 그것만 보면 되겠죠,..
-
CodeEngn(Basic) crackme11 풀이Reversing/CodeEngn(Basic) crackme 2019. 4. 13. 20:29
크랙미 11입니다 오늘 현타가 개쎼게 와서 짧아요 실행ㅎ화면이에요 하하 이것도 패킹된 프로그램이네요, PEID로 열어보면 다시 UPX라서 툴을 써야할까 싶었지만 ASpack도 MUP했으니 이것도 MUP 해봅시다 ..^^ 그 방법에 따르면 POPAD를 찾고 그 이하를 실행시키다보면 본래 코드가 나온다는데 한번 해보겠습니다. 찾았구요, 맨 밑에 BP 걸어서 F9와 F8 해주면 원래 코드가 나왔죠? 여기서 '와! 그럼 OEP는 0040100C겠구나!' 하지 말고요 위에 NOP로 찬 부분이 16진수로 C만큼이므로 원래 OEP는 00401000입니다 그럼 PUSH 0에서 PUSH 11_(2).00402012 까지의 Stolenbyte까지 OEP 뒤에 덧붙이면 그게 이번 문제의 답입니다 하하. 2019.4.13
-
CodeEngn(Basic) crackme10 풀이Reversing/CodeEngn(Basic) crackme 2019. 4. 12. 21:39
MUP 다 해놓고 마지막에 OEP 잘못보고 뭐가 답이지 싶어서 한참 헤맸네요.. 아아아 풀이 굉장히 간략합니다 일단 실행창이구요 이렇게 온 상태에서 뭘 어떻게 해야될지 몰라서 해멨죠 ASPack으로 패킹된 거라 전처럼 UPX 언패킹하듯이 쉽게 언패킹하지도 못했구요 그래서 MUP을 잘 배워왔습니다 .. 뭐 이하는 그 언패킹 과정이구요 retn 0c 찾아서 그 아래 retn 에 다시 BP 걸고 그 안으로 F8 따라 들어가면 이 화면이 나오는데, 여기서 ctrl + a 로 다시 분석하면 이리 조오금 깔끔해집니다 여기서 덤프 떠보면 OEP 가 45834로 나오는데 저게 그냥 OEP 값인줄 알고 저렇게 입력했다가 Incorrect만 오조오억번 봤습니다 위위사진에서 OEP가 00445834로 나오는 걸 진즉에 봤어..
-
CodeEngn(Basic) crackme9 풀이Reversing/CodeEngn(Basic) crackme 2019. 4. 8. 02:07
코드엔진 크랙미9 풀이입니다. 한동안 글이 없었네요 ^~^ keyfile을 확인하기 위해 확인 버튼을 누르라네요 파일이 없으니 확인을 못 합니다. 어 근데 이것도 UPX로 패킹된 프로그램이네요. abex' crackme라길래 다를게 없을줄 알았는데 언패킹한 뒤 다시 디버깅해봤는데 이번엔 앞부분이 NOP로 도배돼있네요 ..? 아마도 이번 문제인 StolenByte와 연관이 있나봅니다. 자세한 내용은 따로 구글링해주세요 *^^* 간략히 말하자면 패킹되는 과정에서 패커가 코드를 이동시키는 몇 개의 명령어 .. 정도로 생각하면 되겠습니다 따라서 저기 NOP 로 뒤덮인 부분이 우리가 찾는 StolenByte겠죠 그런데 UPX 에서는 마지막 JMP 이후 나오는 POPAD 부분이 Stolenbyte라고 합니다. 이부..
-
CodeEngn(basic) crackme7 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 23:17
이제 이거 하고 집가야지 히히 일단 처음 화면.. 어디서 봤다 했더니 여기에서 봤죠? abex 크랙미네요ㅋㅋㅋ 뭔가 반갑다 차이라면, GetVolumeInformationA 함수가 따로 추가되었다는 게 되겠네요. 또 그 위에 GetDlgItemTextA 함수가 있는 것으로 보아 입력값에 정해진 시리얼값이 포함됐는지 검색할 것 같습니다. 아, 저 GetVolumeInformation 함수를 살펴볼게요 파일 시스템(볼륨)의 정보를 가져오는 역할을 합니다. 코드엔진의 문제가 C 드라이브 어쩌고 했으니 이 문제에 적합한 함수 같네요. 그럼 일단 C 드라이브의 이름을 CodeEngn으로 바꾸고 가겠습니다. 아래는 전과 같은 성공/실패 창이구요 그렇다면 드라이브 정보를 가져오는 함수에서 BP를 걸고 그때까지의 시리..