분류 전체보기 155

나뭇잎책 정리 UPACK

왼쪽(원본 노트패드) / 오른쪽(UPACK을 통해 패킹된 노트패드) IMAGE_OPTIONAL_HEADER의 크기(SizeOfOptionalHeader)가 원본에서는 E0인데 패킹된 파일에서는 0148이다. 패킹된 파일에서 SizeOfOptionalHeader값이 0x0148이기 때문에, 섹션 헤더(IMAGE_SECTION_HEADER)의 시작 오프셋이 바뀌게 된다. (원본 노트패드에서는 IMAGE_OPTIONAL_HEADER 구조체가 0xF8부터 시작하는데, 패킹된 노트패드의 경우에는 IMAGE_OPTIONAL_HEADER 구조체가 0x28부터 시작함.) => IMAGE_OPTIONAL_HEADER 시작 오프셋인 0x28+ SizeOfOptionalHeader의 값인 0x148 = 0x170이다.(섹션..

Reversing 2020.03.17

[코드엔진] Advance 4

Name이 CodeEngn 일때 Serial은 무엇인가 별건없다고 나온다. 올리로 띄워보니까 뭔가 평소랑은 좀 다르다.. 아무래도 패킹된건데, die나 peid는 일단 못찾았음. UPX같은건 아닌가보다. 가다보면 jmp가 00401006가 나오고 이런식으로 바뀐다. Animate Over를 이용하면 뭔가 쭉쭉 풀어내는 것을 볼 수 있는데, 패킹된 것을 풀어내는 과정이었던 것 같음. 아무튼 OEP = 00401006으로 두고, 올리덤프를 이용해 언패킹을 해보자. 뭔가 속시원함 패킹된 상태에서는 api나 string이 보이지 않았는데, 언패킹하면 아래처럼 제대로 보인다. string타고 가보자. lstrcmp를 통해 값을 비교하는중. "22222"는 내가 넣어준 값이다. 아래 JNZ 분기를 통해 메시지박스 ..

Reversing 2020.03.12

[코드엔진] Advance 1

이 프로그램은 몇 밀리세컨드 후에 종료 되는가 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 문제만 보면 basic 19번과 유사하다. 풀이도 비슷하다면 쉽게 찾을듯. UPX패킹이 되어 있다. 언패킹해주고 시작. 캡쳐를 안했는데, 안티디버깅 기법이 걸려 있었다. 간단하게 IsDebuggerPresent함수를 이용한거라, 해당 부분을 패치하고 시작.. basic 19와 똑같이 풀린다. timeGetTime에 BP 걸어주고.. 비교하는 부분 찾으면 된다. 0x337B = dec.13179

Reversing 2020.02.25

[코드엔진] basic 20

이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 일단 CRACKME3.KEY파일을 만들었고, 내용에는 1111을 적었다. ReadFile함수 호출 이후에, 12와 4를 비교하는데, 글자 수를 비교하는듯하다. 일단 글자 수를 맞춰줘야할듯. (공백하나) CodeEngn!11111111 로 넣어줬다. 총 18글자. 1 = 0x31(아스키코드) EAX = 31313131에서 31313100으로 변할때 SETE AL 명령어에 의해 바뀌는데, 위에 있는 cmp가 같다는 결과가 나와야 AL이 1로 set된다. 즉, EAX의 값이 1234557B가 ..

Reversing 2020.02.24

[코드엔진] basic 19

이 프로그램은 몇 밀리세컨드 후에 종료 되는가 UPX언패킹하고시작 timeGetTime함수 모두에 bp걸고 찾아보자. timeGetTime함수? 윈도우가 부팅되어 지금까지 흐른 시간을 밀리세컨드 단위로 dword형을 반환함. 따라서 이 프로그램에서는 지금까지 흐른 시간 두 개의 차를 통해 프로그램이 실행된 시간을 구했다. 첫번째 호출의 리턴값 : 9713C 그 아래에 있는 cmp byte ptr ds:[4838d3], 0의 의미는 잘 모르겠다.. 다시 분석해봐야 할 부분임. 호출 값은 esi에 저장하고, 두번째 호출을 한다. 두번째 호출의 리턴값 : bb3e9 일단 반환된 두 값을 비교하는데, timeGetTime 함수가 오류가 날 부분을 처리해준 것 같다.(두 값이 같은 값이라던지..) 두 값을 뺀 값..

Reversing 2020.02.24