Reversing/CodeEngn(Basic) crackme
-
CodeEngn(Basic) crackme5 IDAReversing/CodeEngn(Basic) crackme 2019. 7. 14. 18:33
LOB가 질리려 하니 이쯤에서 슬슬 먹어보는 반찬 참 크랙이 잘 안되는 거는 건너뛰어서 풀고 있습니다 cm1은 이미 풀었던거라 안 풀어도 될거 같구 2, 4는 건너뛰었어요 일단 실행 창이구요 IDA - graph view인데 잘 모르겠죠 아직도 잘 모르겠네요 헤 그래서 멋진걸 배웠습니다 바로 스트링 찾는 단축키 (Shift + f12) 해서 쭉쭉 내려보면 뭔가 수상쩍은 구간이 나오죠 들어와서 살짝쿵 올려보면 누가봐도 시리얼 키라고 할만한 게 있지요 근데 크랙은 안되네? 그러면 시리얼키 입력창 위에 있는 것도 찾아봅시다 이것도 바로 위에 있네요 짠 2019.7.14 리버싱은 뭔가 포너블에 비해 쓸게 없다는게 ㅎㄱㅇ ㅈㅅ
-
CodeEngn(Basic) crackme3 IDAReversing/CodeEngn(Basic) crackme 2019. 7. 6. 23:37
바로 풀이 갑니다 ctrl + f 로 vba를 찾은 뒤 vbastrcmp에 들어갑니다 보면 사실 아직까진 적응 안되는 아이다의 복잡화려한 화면이 나옵니다. 여기서 그 명령어에 BP 건 뒤에 디버깅모드로 들어간 다음에 문제가 생김요 ollydbg에선 그 전에 있는 명령어에서 어떤 값과 비교할지 주어지는데 아이다는 옆에 그런게 안 떠요 그래서 함 더블 클릭을 해봤지요 아이다는 더블클릭도 중요하길래 짜잔 비교할 값이 나와버렸어요 하하! 해서 vbastrcmp 전에 나와있는 저 이상한 값을 그대로 적어넣으면 성공 화면이 뜹니다 이게 어딜봐서 성공 화면이냐구요? . 2019.7.6 이제 해커스쿨 갑니다 이것은 야자
-
CodeEngn(Basic) crackme18 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 11. 19:43
크랙미 18 풀이입니다 예상치 못한 곳에서 되게 쉬운 게 나왔네요 일단 시리얼이 틀렸다는 문구가 나오네요 바로 text strings 들어가서 성공 문구가 있는 곳으로 들어갑니다. 그 위에 보면 시리얼값과 비교해주는 strcmp 함수가 있는데요 여기에 BP 걸고 실행시켜봅시다. Name값은 CodeEngn 그러면 그 strcmp 함수부분에 제가 입력한 시리얼값인 1234와 그 위에는 이상한 문자열이 있는데 아마 이 둘을 비교해서 성공/실패 문구를 나타내는 거겠죠. 고로 Name값이 CodeEngn일 때 시리얼값은 1234 위의 저 문자열입니다. 아마도 시리얼값을 만들어주는 암호 알고리즘이 있을 테지만 싫어요 귀찮아요 문제만 풀었어요 2019.5.11 20까지.. 하고 싶다
-
CodeEngn(Basic) crackme17 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 11. 03:18
이것은 basic 17 풀이입니다 슬슬 끝이 보이네요 ㅎㅋ 문제부터 확인하고 갑시다 저 Key값이 나오는 Name값을 찾으면 된다는거죠 어 Name값이 한자리수라는 설명과 달리 한자리수로는 안되네요 일단 더 치고 Key값도 그렇게 해봤습니다. 아무 일도 일어나지 않네요 별 특별한거 없어보이구요 문구 찾아와서 뭔가 복잡해보이는 부분을 찾아왔습니다 아마도 위에 두 문자열은 Name값의 길이를 판단하는 부분일 거 같으니 그 아래를 주목하겠습니다. 일단 한자리수랬으니 여기 전에 Name값 문자열 길이 비교하는 구문을 이렇게 바꿔줍시다 그리고 Key, 즉 Serial값은 Name값의 변화에 따라 변하는 거 같으니 암호화 알고리즘이 이후 CALL 구문 중 한 곳에는 있을겁니다 고로 죄다 BP 걸고 다 들어가봅니다 ..
-
CodeEngn(Basic) crackme16 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 10. 18:37
16 풀이입니다 일단 아무거나 입력하면 이렇게 실패문구가 나오네요 C++로 작성된 프로그램인거는 알겠는데 이것도 바로 디버깅이 가능할까요.? 되네요, 닷픽 괜히 열었죠 일단 여기서는 뭔가 쓸만한 내용이 없으므로 문자열들 찾아봅시다 그러면 Good Job 이라면서 성공 문구 뜨는 지점이 있으니 들어가봅시다. 이렇게 생겼구요, 좀 생소한 C++ 이다보니까 평소에 봤던 그런 코드가 아니라 좀 당황했지만 어쨌든 위에 분기문이 나오는 건 변함없네요. 일단 JNZ 파트에 BP 걸고 실행하겠습니다. Name은 CodeEngn, 비번은 아무거나 쳤을 때 EAX 값에 제가 친 비번값의 16진수 값이 나오는 것을 확인할 수 있습니다 위에서 JNZ 직전인 CMP 구문에서 저 password 입력값을 [EBP-3C] 주소에 ..
-
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..