CodeEngn(37)
-
리버스엔지니어링 문제 15
http://codeengn.com/challenges/basic/15 14번에 이어 이번에도 시리얼을 구하는 문제입니다.성공 문자열, 분기점이 있는 곳으로 갑니다.CMP를 통해 EAX와 45B844위치의 값을 비교하고 있습니다. EAX에는 두번째 텍스트박스에 넣어준 값이 들어있으므로 45B844위치의 값이 키값입니다. CodeEngn을 넣었을 때 해당값은 24928이라고하네요.
2015.04.04 -
리버스엔지니어링 문제 14
http://codeengn.com/challenges/basic/14 네임이 CodeEngn일 때 Serial을 구하라고 합니다.답은 쉽게 찾을 수 있습니다.비교 구문에서 EAX와 ESI를 비교해주는데 키는 ESI에 들어있고 사용자가 2번째 에디트박스에 입력한 값은 EAX에 들어있습니다. ESI는 129A1로 10진수로 76193이며 이 값이 키가 됩니다.
2015.04.04 -
리버스엔지니어링 문제 13
http://codeengn.com/challenges/basic/13 패스워드를 찾는건데 Ollydbg로 열리지 않습니다. PEiD를 보면 닷넷으로 되어있다고하네요.dotpeek을 이용해서 디컴파일 합니다.암호문, salt값이 보이고 암호화, 복호화 알고리즘이 보입니다. 여기선 평문키를 구할 수 없을 것 같습니다. 암호문을 복호화 함수를 통해 평문키를 뽑아내도록 합니다. dptpeek에서 솔루션으로 export 합니다. 평문을 암호문으로 바꿔주는 소스 수정이 필요없이 바로 ReadLine()에서 복호화한 암호문과 비교하고있습니다. 정답은 Leteminman
2015.04.04 -
리버스엔지니어링 문제 12
http://codeengn.com/challenges/basic/12 Key값을 구하고 Key값을 메시지박스에 출력하도록 하라고하네요.Key는 바로 구할 수 있습니다.7A2896BF의 10진수인 2049480383가 키가 됩니다. 이 값을 넣으면 축하한다는 메시지박스가 뜨는데 이 메시지 대신 키값을 띄워야합니다.HexEdit로 열고 메시지 부분을 봅니다. 단순히 이 값을 키값으로 변경해주면 됩니다. 위치는 0x0D3B~0x0D45(NULL포함)이 됩니다.답은 20494803830D3B0D45
2015.04.03 -
리버스엔지니어링 문제 11
http://codeengn.com/challenges/basic/11 OEP와 Stolenbyte를 구하는 문제입니다.Ollydbg2.01로 열게되면 바로 제대로된 시작부분을 보여줍니다. OEP=0040100C그리고 OEP에서 이전 문제처럼 MessageBoxA를 호출하고 있습니다. 4개의 인자가 필요한데 하나밖에 없습니다. 답은 0040100C6A0068002040006812204000(더 자세한 풀이는 문제9번을 봐주세요.)
2015.04.03 -
리버스엔지니어링 문제 10
http://codeengn.com/challenges/basic/10 OEP와 분기점의 OPCODE를 구하는 문제입니다.9번 문제와 같은 방식으로 OEP를 구하는 것이 쉽지 않습니다. upx를 써보려니 UPX로 팩되지 않았다고 합니다.PEiD를 통해 확인하면 ASPack이 적용되어있습니다. UPX와 비슷하게 아래로 계속 찾아보면 POPAD가 있습니다. 그리고 RETN을 하는 곳으로 가보면 00445834위치가 나오는데 이곳이 OEP입니다. String을 찾아보면 등록성공이라고 Registered...well done 부분이 있습니다. 이 부분의 주소는 0044550C이고 이전의 조건분기문은 004454D4부분입니다. 이곳의 OPCODE는 7555입니다.문제에서 요구하는 값은 004458347555가 됩..
2015.04.03