일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 철학
- CodeEngn Basic 01
- malware
- bob
- CodeEngn
- 논문리뷰
- 리버싱
- BoB 12기
- codeengn basic rce 01
- 코드엔진
- BoB 12기 최종합격 후기
- 코드엔진 베이직
- CodeEngn Basic 5
- 에밀 뒤르켐
- 자살론
- 사회분업론
- h4ckinggame
- 디지털 포렌식 트랙
- 코드엔진 basic 5
- 사회적 사실
- Best of the Best
- Today
- Total
목록IT/reversing.kr (3)
woonadz :)
OEP 를 찾는 문제이다. exeinfo에 넣어보았지만 패킹에 대한 아무런 정보도 나오지 않았다. PEID는 OEP를 찾아주는 기능을 제공하고 있는데 GenOEP를 통해서 OEP를 찾았다. 이 EXE 파일의 패킹 정보를 알고 싶은데 암호화가 된 것인지, 패킹이 된 것인지 분석할 수 있는 방법을 아시는 분이 있다면 곡 댓글로 알려주셨으면 한다.
Serial 값이 5B134977135E7D13인 Name 을 찾는 문제이다. Name과 Serial을 입력받는 서브루틴 함수 시작 부분으로 이동하였다. 사용자의 Name 입력값을 스택에 담은 후에 그 주소를 EDI 레지스터로 옮겼다. Serial을 입력받는 서브루틴 함수로 들어가면 EAX 레지스터에 담긴 값(사용자가 입력한 Serial 값)과 ESI 레지스터에 담긴 값(사용자가 입력한 Name 값을 바탕으로 정답이 되는 Serial 값)을 비교한다. 즉, ESI 레지스터에 담길 값이 5B134977135E7D13 일 때 Name이 일치한다. 다시 거슬러 올라가 분석해보겠다. XOR 부분을 분석하면 다음과 같다. 10이랑 Xor => 5B 20이랑 Xor => 13 30이랑 xor => 49 10이랑 x..
Serial 값을 맞추는 문제 성공 문자열을 추정되는 곳으로 이동 GetDIgUtemTextA 함수를 호출한 후에 CMP 비교를 하고 실패 메시지박스로 이동하거나 계속해서 명령어를 실행시킨다. 사용자의 둘째 입력값을 CMP 구문에서 비교한다. 사용자의 나머지 입력값이 들어있는 부분의 주소를 ECX로 옮긴다. 위 함수에서 사용자의 특정값을 비교하여 1 또는 0을 반환하는 것으로 추정 함수 안 서브루틴으로 들어가보면 사용자가 입력한 나머지 값을 EDI 레지스터로 옮김 그 값을 ESI 레지스터로 옮김 비교할 값(5y)을 ESI 레지스터로 옮김 사용자의 나머지 값을 R3versing이라는 값과 해당 for문에서 비교하는 것으로 추정 사용자가 입력한 값 중 첫째값을 가장 마지막에 계산한다. 따라서 첫째값은 45이..