Reversing(44)
-
리버스엔지니어링 문제 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 -
패치(크랙)
Key4.exe라는 파일을 크랙해보도록 하겠습니다.Key4는 위와 같이 두 입력란이 있고 아무거나 입력했을때 아래와 같은 창을 띄웁니다. 어셈블리 코드를 보면 다음과 같은 구간이 있습니다. CMP EAX, ESI를 통해 두 메시지박스 중 하나를 띄워줍니다. 단순히 성공했다는 메시지를 띄우는것이 목적이라면 JMZ명령어를 수정해 줄 수 있습니다.EAX와 ESI의 값을 같게 수정해줘도 되지만 JMZ명령어를 없애줘도 됩니다.위와 같이 JMZ명령이 있던 부분을 NOP로 채웠습니다. 그럼 점프가 발생하지 않고 바로 아래의 Great, 메시지를 출력하도록 할 수 있습니다. OllyDbg는 이렇게 변경된 파일을 실제 프로그램으로 생성하는 기능이 있습니다. 디버거에서만 변경사항을 확인해보지 않고 실제 변경 사항이 적용된..
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