일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 드림핵
- Basic
- reversing.kr
- write up
- 강의
- web
- 파이썬
- 히공
- ShaktiCTF
- 워 게임
- reversing
- PYTHON
- 코드엔진
- c언어
- probgame
- 해킹캠프
- 변수
- 풀이
- 라이트 업
- vsCode
- 뭉뭉
- 리버스 엔지니어링
- 2021
- 라업
- write-up
- 리버싱
- 시탭
- 라이트업
- hackingcamp
- ctf
목록코드엔진 (20)
히공

이러한 문제 입니다. 실행화면 입니다. x32dbg로 열었습니다. f9를 눌러줍니다. 문자열들이 있습니다. 아까 봤던 문자열로 이동해줍시다. 코드가 보입니다. 위에 문자열 비교 함수가 있습니다. bp를 걸어줍니다. 1234를 입력합니다. 제가 입력한 문자열이랑 "677345"를 비교합니다. 정답입니다. 정답 : 677345

문제 입니다. 실행화면 입니다. x32dbg로 열었습니다. 원본 코드를 복호화 하는 작업 같습니다. f9를 눌러줍니다. 문자열을 찾아줍니다. 실패 메세지로 이동합니다. 여기가 체크 하는 부분입니다. bp를 걸어줍니다. 비번값인 "1234"와 "LOD-59919-A0024900"를 비교합니다. 정답 입니다. ++ 페스워드 생성 루틴을 분석하겠습니다. 0x401127에 bp를 걸어줍니다. 를 입력해주고 Test를 눌러줍니다. for문을 돌려 페스워드 값을 만듭니다. def dword(a1): return a1 & 0xffffffff Name = input("input name : ") esi = 0 ecx = 0 edx = 0xA edi = 0 for i in Name: eax = ord(i)+1 eax+=..

이러한 문제입니다. 이런식으로 출력이 됩니다. x32dbg에서 No, that is not the.....를 찾았습니다. GetDlgItemTextA밑에 bp를 걸어줍니다. Name값을 가져옵니다. 그리고 GetDlgItemTextA의 반환값이 3이하면 틀렸다는 메세지를 출력합니다. 그 다음 GetDlgItemTextA에서는 비번값을 가져옵니다. lstrcmpA로 입력한 비번과 3265754874를 비교합니다. 입력했습니다. 반환값이 0 입니다. 근데 이상합니다. 현재 eax값은 0인데 0을 0으로 나누면 오류가 납니다. 이러한 오류가 뜹니다. 한번 더 F8을 누르니 정답이라고 뜹니다. 문자열 찾기로 성공 메세지로 왔습니다. 여기에 bp를 걸고 다시 실행해봤습니다. 다시 입력해 줍니다. 이 곳으로 와서 ..

이 문제는 windows 10에서 실행이 안됩니다. windows 7환경에서 실행해야 합니다. 이러한 문제 입니다. 실행화면 입니다. 메인 함수 입니다. 입력받는 부분 입니다. 핵심 함수 입니다. 1234를 입력하고 핵심 함수로 왔습니다. f7로 들어가겠습니다. 한 요소씩 C R A A A C K E D ! 하고 비교하는걸 볼 수 있습니다. 성공 정답 : CRAAACKED!

이러한 문제입니다. 패킹 되어있습니다. 이 곳에 bp를 걸고 f9를 눌러 실행해 줍시다. 원본 코드 입니다. f9를 눌러 실행을 했더니 안티디버깅 기법을 사용했는지 에러 메세지를 출력합니다. 호출하는 함수를 찾습니다. bp를 걸어줍니다. f9를 이용해 실행하니 여기서 멈췄습니다. 이 부분을 je로 변경해줍니다. 그 후 timeGetTime함수에 bp를 걸어줍니다. docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timegettime timeGetTime function (timeapi.h) - Win32 apps The timeGetTime function retrieves the system time, in milliseconds. The ..

20번을 풀어보겠습니다. 드디어 마지막 문제입니다. 이러한 문제입니다. 실행했을때 이런식으로 나옵니다. x32dbg로 열었습니다. 파일을 만드는 부분인것 같습니다. cmp eax, 0xffffffff로 eax를 비교하는데 eax가 0xffffffff가 아니여야 합니다. 그래야 ReadFile을 호출하는 부분으로 갈 수 있습니다. 여기 나와있는 파일이름을 만들어보았습니다. 다시실행 후 CreateFileA를 실행해보았습니다. 0xffffffff가 아닙니다. 1단계는 성공했습니다. 이제 저 파일에 아무 글자나 써보겠습니다. HxD로 1234를 넣었습니다. 0x402008에 1234 가 들어갑니다. 그리고 cmp로 [4021A0] 와 0x12를 비교합니다. 저 값을 살펴보니 4였습니다. 인자들을 확인해보겠습니..

19번을 풀어보겠습니다. 이러한 문제입니다. 실행화면 입니다. UPX패킹입니다. bp걸고 실행해줍시다. oep 입니다. bp부분에서 오류가 납니다. 다시실행하고 bp부분으로 들어왔습니다. 또 여기서 오류가 납니다. bp안으로 들어와봤습니다. IsDebuggerPresent가 보입니다. 다시실행 후 함수로 들어와줍니다. 이 부분을 je로 바꿔줍니다. 그리고 나서 이 함수를 검색해 줍시다. (함수 호출을 살펴봤는데 이 함수가 의심스러웠습니다.) 전부 bp 걸어줍니다. f9를 누르면 여기서 멈춥니다. 그리고 여기서 분기합니다. eax와 [ebx+4]를 비교합니다. bp걸고 확인해봅시다. 여기와 eax를 비교합니다. 0x2b70 = 11120 정답 : 11120

18번을 풀어보겠습니다. 이러한 문제입니다. 실행화면 입니다. check를 눌러보았습니다. x32dbg에서 문자열을 찾아보았습니다. 2번째를 더블클릭해서 봐봅시다. cmp eax,5 를 하고나서 eax가 5미만인지 체크합니다. 구글에 msdn GetDlgItemTextA 이라고 쳐서 return값을 알아보았습니다. 한마디로 문자열의 길이를 반환해줍니다. bp를 걸고 실행해봅시다. check를 눌러줍니다. 4076F0이 Name입니다. 분기점 입니다. 보면 제가 입력한 abcd와 1879321517CE7930를 strcmp로 비교하는것을 볼 수 있습니다. Check를 눌러보겠습니다. 잘뜹니다. 같은방법으로 CodeEngn을때 Serial을 구해봅시다. 입력해줍니다. 06162370056B6AC0하고 입력한..