파일분석
-
CodeEngn(Basic) crackme3 IDAReversing/CodeEngn(Basic) crackme 2019. 7. 6. 23:37
바로 풀이 갑니다 ctrl + f 로 vba를 찾은 뒤 vbastrcmp에 들어갑니다 보면 사실 아직까진 적응 안되는 아이다의 복잡화려한 화면이 나옵니다. 여기서 그 명령어에 BP 건 뒤에 디버깅모드로 들어간 다음에 문제가 생김요 ollydbg에선 그 전에 있는 명령어에서 어떤 값과 비교할지 주어지는데 아이다는 옆에 그런게 안 떠요 그래서 함 더블 클릭을 해봤지요 아이다는 더블클릭도 중요하길래 짜잔 비교할 값이 나와버렸어요 하하! 해서 vbastrcmp 전에 나와있는 저 이상한 값을 그대로 적어넣으면 성공 화면이 뜹니다 이게 어딜봐서 성공 화면이냐구요? . 2019.7.6 이제 해커스쿨 갑니다 이것은 야자
-
abexcm4 풀이 - IDAReversing/abexcm 2019. 6. 9. 17:26
abexcm4 아이다 풀이입니다. 기억나네요. 문자마다 strcmp를 걸어서 registered 버튼이 모든 시리얼값이 맞아야 활성화되는 크랙미입니다. 일단 ThunRTMain을 보면 VB로 짜인 프로그램임을 알 수 있죠 Ctrl + F 로 vba를 검색한 뒤, 문자열 비교 함수인 strcmp를 찾아서 들어가봅니다. 들어가서 대충 앞뒤를 훑어보고 힌트가 안나온다 싶으면 BP 걸고 디버깅모드로 전환해야지요 뭐 아무거나 1234 눌러보려는데 1만 눌렀더니 바로 코드가 돌아가네요 입력받는 문자마다 인식한다는 걸 알 수 있죠 그래서 이것저것 만져보다가 저기 ECX의 debug:023~~~부분에 커서를 갖다대고 스크롤(휠)을 돌리면 그.. 스택창인가? 뭔지는 모르겠는데 7자리 수가 나와요, 그게 아무래도 시리얼값..
-
abexcm3 풀이 - IDAReversing/abexcm 2019. 6. 7. 21:51
abex crackme3 풀이입니다. 2 풀려는데 너무 뭔가 꼬여서 나중에 꼭 할겁니다 일단 실행화면이죠, keyfile을 인식해서 성공화면을 출력하는 형식의 프로그램입니다. 이제 이거는 graphic view라고 정식 명칭을 알아냈습니다. 프로그램 분석 전에 전체적인 작동 원리를 대충 파악하게 해주는 역할을 한다고 볼 수 있어요 그리고 몰랐는데 딴 문서 보니까 IDA는 프로그램을 분석할때 그 파일이 있는 폴더에 이런저런 파일을 또 만들어서 작동한다고 그러더라구요 신기해서 찍어봤습니다 오오 뭔가 간결한 거 같네요 세미콜론으로 시작하는 저 줄이 딱딱 지역을 구분해주는 거 같아서 맘에 들어요 근데 디버거랑 다른게 있어보여요 그러므로 디버거랑 비교해봅시다 ..음,, 뭔가 아이다가 좀 더 가독성이 좋은 거 같네..
-
abexcm1 풀이 - IDAReversing/abexcm 2019. 5. 26. 23:32
올리디버거 그 빽빽한 창만 보다가 아이다라는 신문물을 접하니 마치 원숭이가 유인원이 된듯 합니다 그냥 저도 이것저것 눌러보면서 아이다에 최대한 익숙해져 보려고 합니다 갠적으로 프로그램 동적 분석 이전에 이렇게 미리 코드가 순서대로 정리되어 있는것 매우 좋아요 후후 아직 저 중간에 ===================== 이게 어떤 명령을 기준으로 가르는 것인지는 모르겠지만 암튼 저렇게 간간히 나뉘는 것도 꽤 좋네요 코드만 너무 빽빽하지도 않고 일단 GetDriveTypeA 함수의 기능을 살펴보면 현 드라이브의 위치를 파악해서 각 드라이브에 따라 다른 숫자들을 값으로 내놓는 역할을 합니다. 해서 MessageBoxA 함수의 내용을 살펴보려 했는데요 왜인지는 모르겠지만 아래 imp_MassageBoxA 박스를..
-
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) 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..