일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 게임 프로그래밍
- 10809
- c++
- 소프트맥스 함수
- 퍼셉트론
- 프로그래머스
- JS
- 크레인 인형뽑기
- c언어 게임
- 리버싱
- 신규 아이디 추천
- 네트워크
- 5585
- Old-14
- 웹해킹
- old-1
- Old-17
- 코드엔진
- 코딩테스트 연습
- C언어
- openCV
- 백준
- 웹케이알
- boj
- 자바스크립트
- 딥러닝
- tcp
- 자바
- 계단함수
- webhacking.kr
- Today
- Total
목록리버싱 (10)
SteffenLee
CodeEngn 9번 풀이입니다. Challenges : Basic 09 Author : abex Korean : StolenByte를 구하시오 Ex) 75156A0068352040 English : Find the StolenByte Ex) 75156A0068352040 StolenByte를 구하는 문제입니다. StolenByte : 훔쳐진 코드로 코드 일부분을 OEP로 점프하기 전에 PUSH합니다. StolenByte는 주로 패커에서 자주 보입니다. 그리고 프로그램을 덤프 할 때 StolenByte를 복구하지 않으면 프로그램이 정상적으로 작동 안 할 수 있습니다. 프로그램을 실행 시켜보겠습니다. 이런 식으로 나오는 군요 그럼 PEiD로 패킹이 되어있는지 확인해봅시다. UPX로 패킹이 되어있군요. 그럼..
코드엔진 basic 08번 풀이입니다. OEP를 구하는 문제이군요. 그렇다면 이 프로그램은 패킹이 되어있다고 볼 수 있습니다. PEiD로 확인해보겠습니다. UPX로 패킹되어있군요. 올리디버거로 열어보겠습니다. 앞에서부터 쭉 해오던 패커를 언패킹하는 거니 바로 풀겠습니다. 이렇게 찾으시면 저 점프문에서 점프하는 주소가 정답입니다. 인증해보겠습니다. 성공입니다. 감사합니다.
코드엔진 07번 풀이입니다. 문제가 c드라이브 이름이 codeengn일 경우 생성된 시리얼을 찾으면 되나 봅니다. 그럼 c드라이브 이름을 codeengn으로 바꾸고 시작하겠습니다. 이제 올리디버거로 열어보겠습니다. 일단 한 번 실행시켜 보겠습니다. 이런 식으로 입력을 하니 시리얼이 다르다고 뜨네요. 그럼 밑으로 내리다 보면 많은 문자열이 보이는 곳이 있습니다. 밑에는 실패나 성공을 했을 때 뜨는 문구도 있습니다. 그리고 중간에 아까 입력했던 asdf라는 문자열도 있군요. 그렇다면 저 부근에서 문자열 비교가 일어난다는 걸 추측 할 수 있습니다. 추측이 맞는지 확인 해봅시다. 성공, 실패 여부를 확인하는 곳 앞에는 JE분기문이 있습니다. 이 분기문은 ZF를 보고 판단하여 분기하게 됩니다. 그렇다면 저 부분에..
코드엔진 baisc 06번 풀이 입니다. 문제가 언팩을 한 후에 시리얼을 찾아서 인증하는게 문제인가 봅니다. 언팩을 하려면 어떤 패커로 압축되어 있는지 확인해봅시다. PEiD로 열어봤습니다. UPX로 패킹이 되어있군요. UPX패커라면 지난번에 풀었던 5번과 같은 패커로 이루어져있습니다. 그렇다면 바로 올리디버거로 열어서 언팩을 진행해보겠습니다. 올리디버거로 열은 뒤 POPAD를 찾고 그 밑에서 JMP을 찾았습니다. 그러면 JMP로 따라가는 저 주소 값이 정답의 절반이겠군요 지금까지 정답은 ; 00401360Serial입니다. Serial 키를 찾으러 가봅시다. 지난번과 같은 방법으로 언팩해주신 후에 올리덤프로 저장해주시면 되겠습니다. 2018/01/05 - [CodeEngn] - [CodeEngn]bas..
코드엔진 basic 05번 풀이입니다. 이번 문제는 프로그램에 등록키를 알아내는 문제인가 봅니다. 풀이에 앞서 이 프로그램은 패킹이 되어있습니다. 패킹에 관한 내용은 나중에 따로 다루겠습니다. 그래서 PEiD라는 프로그램으로 패커의 종류를 알아보겠습니다. UPX 0.89.6 - 1.02라는 패커로 패킹 되어있군요. 이 패커의 특징은 시작 부분에서 PUSHAD를 하고 OEP(Original Entry Point)로 들어가기 전에 POPAD를 한다. POPAD이후에 나오는 JMP의 주소 부분이 OEP 주소이다. PUSHAD : PUSHAD는 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI의 레지스터 값을 스택으로 PUSH 합니다. POPAD : POPAD는 반대로 스택 값에 있는 EAX..
코드엔진 basic 04번 풀이입니다. 안티 디버깅이 되있는 프로그램입니다. 프로그램을 실행시키면 정상이라는 내용이 계속해서 출력되는군요. 그럼 올리디버거에 프로그램을 올리고 실행시켜보겠습니다. 올리디버거에서 실행시켰더니 디버깅 당함이라고 뜨는군요. 그렇다면 이제 디버깅을 탐지하는 함수를 찾아봅시다. Ctrl + F2를 눌러 재시작해주시고 F8로 쭉 실행시켜봅니다. 중간에 실행이 멈추면서 무언가를 호출해오면서 cmd창에 디버깅 당함이라 뜨기 시작합니다. 그렇다면 다시 한번 재시작해주시고 저 부분까지 내려옵니다. 이번에는 F8이 아닌 F7로 내부로 들어가 봅니다. 이런식으로 내부로 들어오게 됩니다. F8로 천천히 실행시키다 보면 중간에 IsDebuggerPresent라고 수상하게 생긴 함수가 있습니다. 이..
새해 복 많이 받으세요! 코드엔진 basic 03번 풀이입니다. 문제는 프로그램 내에 비주얼베이직에서 쓰는 스트링 비교함수를 찾으면 되나 봅니다. 그러면 올리디 버거로 열어보겠습니다. 이런 식으로 돼 있군요. 이런 문제는 실행시키면서 문자열 비교함수를 찾아도 되지만, 다른 방법으로 한번 찾아보겠습니다. 문자열을 비교시킬려면 문자열 비교함수를 호출해야합니다. 그러면 함수만 모아서 찾으면 쉽게 찾을 수 있겠군요. 우클릭 후 > Search for > All intermodulaer calls를 가시면 호출하는 함수 목록을 볼 수 있습니다. 이런 식으로 말이죠. 그럼 이제 저 안에서 비주얼 베이직에서 사용하는 문자열 비교함수를 찾으면 됩니다. 저는 찾을 때 c언어에서 문자열비교함수가 strcmp라는것을 생각하..
코드엔진 basic 2번 풀이입니다. 패스워드를 인증하는 실행파일이 손상되어 실행이 안된다고 합니다. 일단 올리디버거로 열어보면 이러한 문구가 뜨며 실행이 안됩니다. 그럼 헥스에디터를 사용하여 열어 보겠습니다. 헥스에디터를 사용해서 열면 밑에 와 같이 16진수와 아스키 코드 값을 보겠습니다. 쭉 보다보면 이제 뭔가 나올 것 같군요 Yeah, you did it! Crackme#1 뒤에 보면 매우 정답처럼 보이는 문자열이 있습니다. 인증해봅시다. 이것으로 코드엔진 basic 02번 풀이를 마치겠습니다. 감사합니다.