목록Reversing (6)
cgy12306
Direct3D 파일이 패킹이 되어있는지 확인해보자. 패킹이 안되어 있다. 정훈이랑 올리디버거로 프로그램을 실행시켰을 때 엔트리 포인트가 달랐다. 정훈이가 ASLR 걸려있는 것 같다는 추리를 듣고 인터넷에 ASLR이 걸려있는지 확인하는 방법과 해제하는 방법을 찾았다. PE view로 파일을 열고 IMAGE_OPTIONAL_HEADER에서 DYNAMIC_BASE를 확인할 수 있다. 동적으로 BASE를 변경해준다. 000015E에 8140이라 적혀있는 부분에서 40을 00으로 바꿔준다. 바꿔주면 아래와 같이 주소가 00403ECD로 바뀌는걸 볼 수 있다. 이렇게 엔트리 포인트가 고정이 되면 IDA로 정적 분석을 할 때 편하게 분석을 할 수 있다. 우선 HP를 변경을 하고 싶은데 10이라는 숫자가 어딘가에 담..
ImagePrc 파일을 열어 패킹이 되어있는지 ExeInfo 툴로 확인한다. 패킹은 안되어 있다. 파일을 열어보자. 이 함수를 실행시키면 그림 그리는 파일이 실행되는 것을 확인할 수 있다. 쭈욱 실행하다 보면 이 지점에서 계속 반복문이 돌아가는 것을 볼 수 있다. ECX에 있는 값을 DL에 넣고 EAX+ECX에 있는 값을 BL에 담아서 BL과 DL이 같지 않으면 점프하는 것을 볼 수 있다. 즉 BL과 DL이 같아야 한다. 여기서 의심을 해보면 그림을 그렸을 때 비교가 되어지는 원본 값과 우리가 그린 값을 비교하는 것으로 보인다. ECX의 주소를 직접 찾아가서 값을 확인해보자. 다시 EAX+ECX의 값을 찾아가서 값을 확인해보자. EAX+ECX 부분을 쭈욱 내려봤을 때 중간 중간에 00이라는 값이 들어가 ..
OEP를 찾아라. OEP는 Original Entry Point의 줄임말이다. 패킹을 하게 되면 entry point도 변하게 된다. 그래서 진짜 entry poin인 OEP를 찾아야 한다. 패킹은 원본 프로그램을 보호하기 위해 암호화나 압축, 특정 연산으로 코드를 변조시키는 것이다. 이 지점은 반복문이 계속 돌아가는 지점인데 반복문이 한번씩 바뀔 때마다 값이 바뀌게 된다. 409000에서 004094EE까지 값이 변하는걸 볼 수 있다. 이 지점 또한 바뀌게 된다. 406000에서 00409000까지 변하게 된다. 여기서 PE 구조를 생각해 봐야한다. PE 파일에서 섹션은 PE가 가상 주소 공간에 로드된 다음 실제 내용을 담고 있는 블록들이다. 섹션의 .text영역은 코드를 담고있는 영역이고, .data..
ReadMe.txt 파일을 열어보자. 해당 시리얼에 맞는 이름을 찾으라는 문제이다. string으로 문자열을 검색해보자 이 부분이 main함수 부분이라는 것을 알 수 있다. EDX에 입력한 값 중에 한 바이트가 들어가게 된다. 근데 ECX와 EDX랑 XOR 연산을 한다. XOR 연산의 결과 값을 첫번째 오퍼랜드에 넣어준다. 그러면 EDX에 41과 10을 XOR 연산한 것이 들어가게 된다. 두번째 반복을 돌때에는 입력받은 두번째 바이트가 저장된 EDX와 ECX를 XOR 연산한다. 두번째 때에는 ECX에는 20이 들어가 있다. 세번째 때에는 ECX에는 30이 들어가 있다. 네번째 때에는 ECX에는 다시 10이 들어가 있다. 그렇게 쭉쭉 하다 보면 반복문을 탈출하게 된다. 반복문을 탈출하고나서 Serial을 ..
Easy CrackMe 파일을 열어보자. 값을 입력하는 메시지 창이 뜬다. 메인함수 부분이라고 추정되는 곳에 BreakPoint를 걸어준다. 61과 ESP+5와 비교하는 부분을 볼 수 있다. ESP+5에는 b가 들어가 있는 것을 볼수 있고, ESP+5 값은 0x61(a) 이어야 한다. 해당 부분을 넘어가면 4010C3에서 어떤 함수를 호출하는걸 볼 수 있다. 그곳을 따라가보면 반복문을 볼 수 있다. 이 지점에서 세번째로 입력받은 값이 5와 비교한다. 우리가 알아낸 두번째 글자는 a, 세번째 글자는 5이어야 하니까 값을 위와 같이 넣어주고 다시 실행해보자. 다시 아까 반복문에서 네번째 글자와 y를 비교한다. 같으면 넘어가고 틀리면 점프하게 된다. 현재 ?a5y??????까지 알아 냈다. 계속 실행하다보면 ..
reversing.kr에서 ransomware파일을 다운 받았다. run.exe 파일을 실행시켜 보자. 올바른 key를 입력하면 해독이 되고, 다른 key를 입력하게 되면 파일의 내용이 더 손상된다는 내용이다. 파일을 ollydbg로 분석해봤더니 메인 함수를 찾기가 어려워서 인터넷에 검색을 했다. 모든 파일을 분석할 때에는 그 파일이 패킹이 돼있는지 확인을 하는 것이 기본이라고 한다. 패킹이란 파일코드에다가 압축을 거는 기법이다. 압축된 파일 그 자체도 실행 파일이다. Peid 툴이나 Exeinfope 툴을 이용해서 파일이 패킹이 되어있는지 확인할 수 있다. upx로 패킹이 되어있는 것을 확인할 수 있고, 언패킹 하는 방법은 upx.exe를 설치하고 -d 옵션으로 언패킹 할 수 있다. 언패킹이 완료되었다..