일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제풀이
- codeengn 13
- upx 언패킹 명령어
- 반복문
- OEP
- StolenByte
- codeengn basic 14
- codeengn basic 18
- break
- Reversing
- codeengn advanced 3
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제 답
- codeengn basic 15
- 프로그래밍 언어
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제풀이
- 리버싱
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제풀이
- CodeEngn
- covetknowledge
- codeengn basic 17
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제
- 조건문
- codeengn basic 19
- codeengn advanced 1
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제 답
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제 답
- codeengn basic 20
- codeengn basic 16
- Today
- Total
목록리버싱/CodeEngn 문제풀이 (22)
One's Knowledge

CodeEngn advanced 3번Name이 CodeEngn 일때 Serial은 무엇인가일단 패킹은 되어있지 않다.실행하면 Name이랑 Serial을 입력하라고 나온다.CodeEngn일때 serial 찾는거라 Name에 CodeEngn 넣으면되서 간단해보인다.문자열중에 성공구문 찾았다. 이동하겠다.위로 올려보니 분기점이 없다...성공구문 출력은 함수호출로 하나보다. 실패구문으로 가보자다행히 실패구문위에는 값을 받는 함수도 있고 분기점도 있어보인다.GetlgItemTextA로 입력 받은 값을 403238에 넣는다.보니 CodeEngn이 들어갔다.그리고 길이가 3보다 큰지 비교해서 작으면 실패 성공하면 넘어간다.그 후 시리얼을 403000에 생성된 FA 76 A7 C2(3265754874)가 403264에..

CodeEngn advanced 1번이 프로그램은 몇 밀리세컨드 후에 종료 되는가. 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오실행하니 대략 12초정도하고 꺼진다.저번에 풀었던 문제랑 비슷하다.upx로 패킹되어있는것을 볼 수 있다.해제!디버거 키고 실행하니 이렇게뜬다.디버거 탐지하나보다.디버거 탐지함수를 발견했다. 이부분에 브포일단 걸어두고 40E969에서 JZ로바꾸면서 넘어가겠다.근데 생각해보니 저번처럼 timegettime함수 찾으면 될거같다.찾았다. 저번에도 이런식인거같은데 문제가 똑같나보다.444C63에 있는 점프로 가보자두번째 시간에서 첫번째 시간을 빼고 그 값을 EBX+4랑 비교하는 것을 볼 수 있다.EBX+4가 비교시간으로 예상된다.값은 7B 33이 있는것을 알 수 있다.13.17..
CodeEngn basic 20번이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다)패킹되어있지는 않다.뭐 아무것도 없다.문제를 보면 프로그램이 key파일을 읽어서 값이 맞으면 출력이 되는 것으로 예상된다.코드를 보니 각종 api를 쓰는 것을 볼 수 있다.한번 전체적인 구성도를 만들어 보았다. 요약하면 CRACKME3.KEY라는 파일을 찾고 그 파일의 바이트가 0x12인지 확인 후각종 연산을 통해 DS:[4020F9]과 비교하여 값이 ..

CodeEngn basic 19번이 프로그램은 몇 밀리세컨드 후에 종료 되는가UPX로 패킹되어있다.일단 unpack문제를 보면 일정 시간이 지나면 자동으로 종료되는 프로그램인가보다.대략 11초정도 뒤에 꺼진다.디버깅해보자실행하니 처음 실행할때랑 다른 창이 뜬다. 디버깅 탐지를 하나보다..조금씩 실행해보자조금 파고드니까 isDebuggerPresent 라는 API가 나온다.디버깅이 되고 있으면 1, 그렇지 않으면 0을 반환한다.TEST EAX, EAX로 EAX가 0인지 확인하고,JNZ 에서 EAX가 0이 아니면, 004338DE로 점프하는것이다.실행하니 1로 잡힌다.그리고 아까 디버깅할때 떴던 알림창이 뜬다.다시 시작해서 zflag 수정하고 계속 들어가겠다.계속 진행하니 waitforsingleobjec..

CodeEngn basic 18번Name이 CodeEngn일때 Serial은 무엇인가패킹은 되어있지 않다.실행하면 Name과 Serial을 넣고 Check 하는 프로그램인 것을 알 수 있다.바로 문자열을 찾았다.분기점 위에 보니 str1, str2를 비교하는 함수에 넣고 그 결과값이 0이면 성공, 1이면 실패구문으로 가는 것을 알 수 있다.그러면 lstrcmpiA라는 함수에 들어가는 인자를 보면 되겠다.보다시피, 내가 넣은 serial 값이 들어갔다. 그 말은 06162370056B6AC0이 Name이 CodeEngn일때의 serial 값이다.한번 넣어보자. 내가 넣은 1234가 그대로 string으로 저장되는 것을 보니 16진수로 바꿔줄 필요 없이 그대로 넣었다.lstrcmpiA이 함수를 실행하니 이번..

CodeEngn basic 17번Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가. 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) 보다시피 패킹되어 있지는 않다.Name과 Key를 써서 Check it!을 누르면 되나보다.성공구문과 실패구문 문자열을 찾았다.분기점을 찾았다. CALL 00404C3C를 하고 점프문이 있는것으로 보아 해당 함수에서 비교한다고 볼 수 있다.EDX의 값이 실행할때마다 자꾸 바뀐다. 쉽지 않다. EAX에 내가 입력한 1234가 있고 EDX에 key로 추정되는 값을 볼수 있다.함수 내부로 들어가 보니 진짜 비교한다.다시나와서 일단 00404C3C는 EAX랑 EDX랑 비교하는..