0x.리버스 엔지니어링/Reversing.kr
-
0x03.Easy Unpack0x.리버스 엔지니어링/Reversing.kr 2019. 2. 27. 11:02
0x03.Easy Unpack 예전 Codeengn 문제풀 때 몇번 본것 같은 기억이 나서 UPX를 확인해보니까 커스텀 패킹으로 된 듯하였다. 급하게 ollydbg를 깔아서 후닥 까보니 금방 끝났다. 초반 부분을 보면 kernel32.dll, GetModuleHandleA, FreeLibrary 및 VirtualProtect와 관련된 작업을 수행하고 특정주소로 분기를 한다. 해당 부분에서 JMP 00401150을 따라가보면 OEP가 나온다. 스택 프레임이 정의되면서 작업이 수행되서 아래와 같은 창이 뜨는 시점이기도 하다. 결론적으로 프로그램에 직접적인 영향을 주는 시점이 00401150이었고, 해당 부분이 OEP임을 알 수 있다. (분석은 loop문 만나면 bp로 빠져나오고, f8로 진행하다가 jmp부분..
-
0x02.Easy Keygen0x.리버스 엔지니어링/Reversing.kr 2019. 2. 24. 18:00
0x02.Easy Keygen revkr 문제를 오랜만에 풀어보는 듯하다. 리버싱이 요즘 부족하다고 느껴서 심심할 때마다 하나씩 손봐줄려고 한다. 엄청 쉬운 문제중 하나였다. ㅋㅋ ReversingKr KeygenMe Find the Name when the Serial is 5B134977135E7D13 키젠 문제인데 Serial을 바탕으로 Name을 찾아라고 한다. 프로그램이 진행되면서 사용자로부터 Name과 Serial 두 정보를 입력받고 Correct 또는 Wrong이라는 결과를 출력해준다. 프로그램의 flow상 결국 untrusted input은 Name과 Serial로 정의할 수 있다. 다만 우리가 Serial 을 알고 있기 때문에, 결국은 Serial로 Name을 추측하는것이 목표기에..
-
0x01.Ransomware0x.리버스 엔지니어링/Reversing.kr 2018. 1. 9. 16:35
0x01.Ransomware 오랜만에 풀어보는 리버싱 문제라 그런지 생각보다 힘들었다. 머리가 잘 안 굴러가는 듯한 느낌이 들 뿐 ㅋㅋ.가장 먼저 포맷을 확인해보니, UPX로 인코딩이 되어있다. 바로 풀어준다. 여기서 윈도우7에서 진행했는데 한글이 깨져서 시간을 많이 허비했다. 어쨋든.. 실행시켜보면 key값을 입력받는데, 키 값의 여부에 따라 어떤 동작을 한다는 사실을 예측할 수 있다. 올리로 까볼 필요성이 있다. 가장 먼저 Key : 스트링을 따라가보았더니, 이곳이었다. 밑으로 조금 내려보니, 루프 문이 있는데, BP 부분에서 각각 file과 key 인자값을 불러오는 작업을 하였다. 루프문을 한 줄로 요약하자면 file[i] ^ key_input[i] ^ 0xFF 작업을 수행하는 것이다. 그런데 아무..
-
0x00.Easy Crack0x.리버스 엔지니어링/Reversing.kr 2017. 11. 17. 10:47
0x00.Easy Crack 사용자로부터 값을 입력받고 확인 후 일치 여부를 출력해주는 간단한 프로그램이다. 갓갓 아이다로 뜯어보면 조건문이 있다. 입력값으로 123456789를 넣고, 이 조건문들을 올리디버거로 추적해보았다. 입력 받는 함수를 따라가보면 위의 주소와 같다. 아래부터 CMP 명령어들이 있는데 이것들을 다 확인해보았다. 첫 번째 조건문을 확인해보니 ESP+5에 저장된 값을 "61"과 비교한다. 그래서 ESP+5를 따라가 보았더니, 0019F7D5에서 2라는 값에 해당되는 것을 알아내었다. 이를 통해 입력 값의 2번째 요소가 0x61즉 a가 들어가야 한다는 사실을 알 수 있다. 이번에는 1a3456789f를 넣고 진행해보았다. 계속해서 실행해보면 Arg1의 값으로 3456789가 들어간다. ..