리버싱 문제(38)
-
리버스엔지니어링 문제 8
http://codeengn.com/challenges/basic/08 OEP를 구하는 문제입니다. 지난번에 한것처럼 쭉 따라가다보면 점프문이 있습니다.(PUSHADD와 POPADD를 참고합니다.) 01012475
2015.03.29 -
리버스엔지니어링 문제 7
http://codeengn.com/challenges/basic/07 C드라이브의 이름이 CodeEngn일 경우 시리얼이 생성될 때 CodeEngn이 어떤 것으로 변한다는데 무슨 말이냐면 프로그램 내부에서 C드라이브의 이름을 사용합니다. 이 이름을 문자열로 가져와서 사용하는데 다른 문자열로 변형시키게 됩니다. 이 때 변형된 값이 무엇인지를 맞추는 문제입니다. 처음 디스어셈블 하자마자 나오는 코드는 아니고 해당 위치까지 진행한 상태입니다. 키값을 임의로 넣고 버튼을 누른 후 드라이브 이름을 가져오는 GetVolumeInformationA함수까지 진행된 상태입니다. 제가 넣은 값은 aaaa이고 가져온 드라이브 이름은 Application입니다. 여기서 저 드라이브는 C드라이브가 아닌데 프로그램이 실행된 드..
2015.03.29 -
리버스엔지니어링 문제 6
http://codeengn.com/challenges/basic/06 OEP값과 키값을 찾는 문제입니다. 친절하게 언팩을 하라고 하니 일단 하고 디어셈블해봅시다. Text string을 잘 찾다보면 키값은 금방 찾을 수 있습니다. 이제 OEP를 찾아봅시다. 언팩되지 않은 상태의 파일을 디어셈블하면 PUSHAD에서 시작합니다. 밑으로 쭉 내려오다보면 POPAD가 있습니다.POPAD의 아래 점프문에 브레이크포인트를 걸어주고 이 점프문이 향하는 곳이 OEP가 됩니다.OEP=00401360
2015.03.23 -
리버스엔지니어링 문제 5
http://codeengn.com/challenges/basic/05 키값을 찾는 문제입니다. 그냥 디어셈블 해보려고 하면 뭔가 안됩니다. 결과도 이상하고... hex 에디터로 열어보면 UPX가 보입니다. 언패킹을 해줍니다. 다시 디어셈블 해주고 텍스트 스트링을 봅니다. User와 키값이 보입니다.
2015.03.23 -
리버스엔지니어링 문제 4
http://codeengn.com/challenges/basic/04 디버거를 탐지하는 함수의 이름을 찾으라는데 아시는 분들은 바로 답이 나오실겁니다. 그래도 한번 보겠습니다. 역시 IsDebuggerPresent에 브레이크 포인트를 걸었을 때 반응이 있습니다.
2015.03.23 -
리버스엔지니어링 문제 3
http://codeengn.com/challenges/basic/03 프로그램을 실행해보면 Regcode를 넣는 부분이 있습니다. 정확한 문자열을 넣으면 되는... 그런 프로그램인것 같네요. 문제 내용은 비교함수 이름을 찾는 것입니다. Text string으로 검색을 해보면 아래와 같은 부분을 발견할 수 있습니다. 키로 추측되는 값도 보이고 메시지들도 있네요. 비교 함수는 vbaStrCmp라는 것을 확인할 수 있습니다.
2015.03.23