일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 6번문제
- 치트엔진 튜토리얼
- Couldn't in
- CodeEngn
- WTF_CODE
- 치트엔진
- 워게임풀이
- 오토잇디컴파일
- wargame.kr
- cheatengine
- CheatEngine Tutorial
- suninatas
- 포렌식
- 써니나타스
- 치트엔진 튜토리얼 게임
- 8번문제
- xcz.kr prob
- 워게임
- Basic RCE
- 1번문제
- 시스템
- xcz.kr
- BasicRCE
- Couldn't invoke the file
- 리버싱
- Web
- 3번문제
- xcz.kr 문제풀이
- reversing
- WarGame
- Today
- Total
목록CodeEngn (15)
HackChang
Advance RCE L05 Serial 을 구하시오 항상 해왔던 것처럼 PEID에 올려봤다. 비주얼 베이직으로 만든 프로그램인 것을 볼 수 있었고, 실행을 시켜봤다. 실행시키면 위와 같은 프로그램이 나오게 된다. 자세히 보기위해 올리디버거로 열어보도록 하겠다. 우선 함수부터 찾아보기로 했다. 많은 함수들을 찾았지만, 여기서 익숙한 함수를 보게되었다. 비주얼 베이직 프로그램의 문자열 비교 함수인 __vbaStrCmp를 찾았고, 해당 부분에 BP를 걸고 실행시켜봤다. 프로그램에 12345를 입력하고 ok를 눌렀다. BP를 걸어둔 부분에서 걸리는 것을 볼 수 있고, 12345는 입력값이고, ECX의 값이 시리얼값이라고 추측된다. 이렇게 프로그램을 재실행 후 시리얼값으로 추측되는 값을 넣으면 해당 메세지박스가..
Basic RCE L20 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다) 드디어 Basic의 마지막 문제입니다. 프로그램을 실행하면 위와같은 화면이 나옵니다. 따로 기능은 없는 것으로 보입니다. PEID에 파일을 올려봤습니다. PEID를 통해 어셈으로 제작된 프로그램인 것을 알 수 있었습니다. 올리디버거를 통해 프로그램을 열어봤습니다. 보게되면, CreateFile을 통해 CRACKME3.KEY이 있는 경우에 18바이트만큼 문자를..
Basic RCE L17 Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) 실행을 하면 키젠프로그램이 나온다. 1을 입력하고 check it!을 누르면 위와같은 메세지가 키에 들어간다. 올리디버거를 통해 열어봤다. 스트링 검색을 통해 에러메세지와 성공메세지를 찾을 수 있었다. 위의 에러메세지로 들어가봤다. 글자수가 3글자미만일때 에러메세지가 출력되는 것을 볼 수 있다. 문제는 Name이 한글자라고 했으니 비교하는 부분을 한 글자로 바꿔준다. 1로 바꿔주고, 실패 문자열 아래에 BP를 걸고 실행시킨다. 1을 입력하고 Checkit!을 했을 때의 시리얼을..
Basic RCE L15 Name이 CodeEngn일때 Serial을 구하시오 압축을 풀고, 습관처럼 PEID에 올려봤다. 따로 패킹이 되어있지 않은 것을 볼 수 있었고, 올리디버거를 통해 열어봤다. 스트링을 검색하고 CRACKED라는 성공메세지로 들어가본다. 이 문제도 L14와 같이 EAX와 비교하여 같지않으면 0045854(Try Again !)으로 점프를 시킨다. 비교문에 BP를 걸고 실행해봤다. 레지스터를 보면 시리얼값으로 1이 들어간 것을 확인할 수 있었고, 48B844와 비교하므로, 아래 데이터창에 45B844를 검색해본다. DWORD PTR DS는 4바이트 값이기 때문에 60 61 00 00 인 것을 알 수 있었다. 여기서 주의할 점은 메모리 덤프 주소는 리틀 엔디언 방식으로 읽어야 한다는 ..
Basic RCE L14 Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 습관처럼 압축을 풀고, PEID에 올려봤다. UPX로 패킹이 된 것을 확인할 수 있었고, 툴을 통해 언패킹을 진행했다. 언패킹을 하고, 올리디버거로 열어봤다. 스트링을 검색하고, 성공메세지가 뜨는 주소로 이동한다. 성공메세지를 확인하기위해 문자를 비교하는 부분에 BP를 걸고 실행시켜본다. Name에 CodeEngn을 적고 Serial에 1을 적고 체크를 한다. EAX는 내가 입력한 값이고, ESI가 시리얼인 것을 알 수 있다. ESI를 10진수로 바꿔서 인증하면 된다.
Basic RCE L11 OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 OEP를 찾는 문제는 패킹이 되어있을 확률이 높다. PEID로 열어본다. 역시나 패킹이 되어있었고, UPX로 패킹된 파일이었다. 검색을통해 POPAD를 검색해본다. stolenbyte를 찾기위해 0040736D에 BP를 걸고 실행해본다. 0040736E~00407370까지 stolenbyte인 것을 알 수 있고, OEP는 jmp문으로 점프하는 부분일 것이다. 하지만 stolenByte때문에 0040100C가 OEP는 아니다. stolenbyte를 채워..
OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 프로그램을 실행하면 이와같이 나온다. OEP를 구한다는 것은 패킹을 한다는 것으로 생각하면 될 것 같다. PEID를 통해 열어보았다. ASPack으로 패킹이 된 것을 볼 수 있다. ASPack의 경우 OEP를 알아내는 방법은 다음과 같다. 검색을 통해 POPAD를 검색하여 POPAD가 있는 부분을 찾아 BP를 걸고, F9를 누르게 되면 00445834라는 OEP를 찾을 수 있게 된다. RETN부분에 BP를 한번더 걸고 F9로 실행 후 F8을 눌러 OEP(00445834)에 도달한다. 이게 정말 OEP인가 하겠지만 Ctrl+A 를 통해 코드를 다시 읽고, 스트링을 검색..
Basic RCE L09 StolenByte를 구하시오 Ex) 75156A0068352040 문제를 풀기 전에 StolenByte가 뭔지 우선 구글에 검색을 해보았다. 검색해본 결과, StolenByte란 패킹 과정을 방해하기위해 프로그램의 일부 바이트를 별도의 영역에서 실행되게 하여 OEP를 다른 위치로 가장하고 덤프를 쉽게 하지 못하도록 구현한 기법입니다. StolenByte와 함께 복원해야 덤프가 성공적으로 처리된다. 결과적으로 EP와 관련된 것으로 보아 이 파일또한 패킹이 되어있을 것으로 생각하고 PEID를 통해 열어보았다. UPX로 패킹된 것을 확인할 수 있었다. 평소와 같이 툴로 언패킹을 진행하고, 올리디버거로 열었는데 EP부분의 데이터가 깨진 것을 볼 수 있다. 다시 패킹 전의 파일을 열어 ..
Basic RCE L08 OEP를 구하시오 Ex) 00400000 파일을 실행시켜보면 계산기가 나오는 것을 볼 수 있다. 혹시 OEP를 찾는 문제라면 패킹이 되어있을까 하는 마음에 PEID로 열어봤는데 역시나 UPX패킹이 되어있었다. 이번에는 다른 방법으로 OEP를 찾아보도록 하겠다. UPX패킹은 POPAD아래의 점프문부분이 OEP를 가르키고 있으므로, 01012475가 OEP인 것을 알 수 있었다.
Basic RCE L07 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 실행시키면 위와 같은 화면이 나오고, 체크버튼을 통해 인증을 하는 방식이다. 올리디버거를 통해 열어본다. 스트링 검색(우클릭 - Search for - All referenced strings)을 통해 문자열을 확인할 수 있었고, 위에서 GetDlgItemTextA는 텍스트의 길이를 반환해준다. 해당주소에 BP(F2)를 걸고, F9를 눌러 실행을 한다. BP에 걸려 해당주소까지만 실행이 되고, 실행창이 뜨면 CodeEngn을 적고 체크를 누른다. F8을 눌러 올리디버거에서 한 줄씩 실행하다보면 EAX에 8이 담기는 것을 볼 수 있고, 그 다음으로 GetVolumeIn..