일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reversing
- c언어
- 라이트 업
- write up
- 시탭
- 2021
- reversing.kr
- vsCode
- PYTHON
- 강의
- 코드엔진
- ShaktiCTF
- hackingcamp
- web
- 변수
- 히공
- 파이썬
- 해킹캠프
- 드림핵
- write-up
- 뭉뭉
- 라업
- 풀이
- 워 게임
- ctf
- Basic
- 리버스 엔지니어링
- 리버싱
- probgame
- 라이트업
목록reverse engineering (45)
히공
립케알 랜섬웨어 문제를 풀어보겠습니다. 이 문제 입니다. 이러한 readme.txt파일이 있습니다. EXE파일을 복호화 하라고 하네요. 파일 입니다. 실행파일 입니다. 한번 실행해보겠습니다. 자신이 나쁜놈이라면서 파일을 돈을 내고 받은 키값으로 파일을 복구하라고 하네요. 무섭기 때문에 키값은 입력하지 않겠습니다. (ㅠㅠ) UPX패킹 입니다. popad밑 jmp로 와서 f7을 눌러줍니다. 원본코드 입니다. Key : 부분에 bp를 걸고 f9를 눌러보겠습니다. 123456을 입력했습니다. fopen("file","rb")로 fopen을 호출합니다. fseek으로 파일 포인터를 0으로 맞춰주고, rewind로 파일 포인터를 0으로 맞춰줍니다. ftell은 파일의 크기를 반환해줍니다. [ebp-10]에 ftel..
메인함수 입니다. 헥스레이로 본 결과 입니다. sub_8048434가 scanf 였습니다. 입력받은것은 804A020에 들어갑니다. 그 다음 sub_804851 함수 입니다. scanf 에서 입력받은 804A020~804A025를 검사합니다. 간단하게 구할 수 있습니다. 정답 : L1NUX
보호되어 있는 글입니다.
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하고 입력한..