[Reversing.kr] Easy Unpack 100pt

Posted by ORANG ORANG(오랑)
2015.07.09 04:14 Reversing/reversing.kr



그냥 하다보니 풀렸는데.. 왠지 0x401150 인것 같길래 써보니까 풀렸다.






'Reversing > reversing.kr' 카테고리의 다른 글

[Reversing.kr] Easy Unpack 100pt  (0) 2015.07.09
[Reversing.kr] Easy ELF 100pt  (0) 2015.07.08
[Reversing.kr] Easy Keygen 100pt  (0) 2015.07.08
[Reversing.kr] Easy Crack 100pt  (0) 2015.07.08
이 댓글을 비밀 댓글로

[Reversing.kr] Easy ELF 100pt

Posted by ORANG ORANG(오랑)
2015.07.08 21:41 Reversing/reversing.kr


scanf를 통해 문자열을 입력받고, check_auth 함수의 반환값이 "corrcet" 문자열 출력 부분으로 이어진다.



그냥 바이트 단위 연산을 맞춰주면 아래와 같다.


0x804a020 "x" ^ 0x34 \x4c

0x804a021 "1" \x31

0x804a022 0x7c ^ 0x32 \x4e

0x804a023 0x88 ^ 0xdd \x55

0x804a024 "X" \x58

0x804a025 0x00 \x00


"\x4c\x31\x4e\x55\x58" -> "L1NUX" 이므로 그대로 입력하면..




'Reversing > reversing.kr' 카테고리의 다른 글

[Reversing.kr] Easy Unpack 100pt  (0) 2015.07.09
[Reversing.kr] Easy ELF 100pt  (0) 2015.07.08
[Reversing.kr] Easy Keygen 100pt  (0) 2015.07.08
[Reversing.kr] Easy Crack 100pt  (0) 2015.07.08
이 댓글을 비밀 댓글로

[Reversing.kr] Easy Keygen 100pt

Posted by ORANG ORANG(오랑)
2015.07.08 19:53 Reversing/reversing.kr



시리얼이 "5B134977135E7D13"인 Name을 찾으면 된다.

IDA로 열어보면..



위와 같습니다. 대충 흐름은 이름 입력받고 - 시리얼 키 만들고 - 시리얼 입력받아서 비교합니다.


시리얼 키 만드는 과정은 34 ~ 39 라인인데 1바이트 단위로 0x10, 0x20, 0x30 과 xor을 계속 반복합니다. 



각각 다시 xor 연산을 해주면..




'Reversing > reversing.kr' 카테고리의 다른 글

[Reversing.kr] Easy Unpack 100pt  (0) 2015.07.09
[Reversing.kr] Easy ELF 100pt  (0) 2015.07.08
[Reversing.kr] Easy Keygen 100pt  (0) 2015.07.08
[Reversing.kr] Easy Crack 100pt  (0) 2015.07.08
이 댓글을 비밀 댓글로

[Reversing.kr] Easy Crack 100pt

Posted by ORANG ORANG(오랑)
2015.07.08 12:23 Reversing/reversing.kr



실행시켜보니 위와 같았다.

먼저 main함수가 시작되는 부분을 찾고, 위의 "Incorrect Password" 문자열을 찾은 후,




해당 문자열을 출력해주는 부분이 호출되는 부분들을 모두 찾았다. 4군데 정도 있길래 위에서 부터 차례대로 찾아봤다.

문자열 자체에 특별한 연산없이 바이트 단위로 그대로 비교하는 것 같길래

01234567890ABCDEFGH 이런식으로 넣어주고 그냥 비교 부분마다 체크했다.



GetDlgItemTextA 를 통해서 입력받은 문자열을 차례대로 비교하는데,

ESP+4 부터 입력받은 문자열이 위치한다.


첫번째 비교는 2번째 글자 vs 0x61("a") 이고



두번째 비교는 문자열의 3번째 문자 주소 vs "5y" 주소 를 0x401150 함수를 통해서 비교하는데 함수 내용은 아래와 같다.

call sub_0x401150 ( 3번째문자주소, "5y"주소, 2 ) 인데, 나중에 확인해보니 strncmp 함수였다.

반복하면서 비교하고, 값을 반환함



이후 "R3versing" 문자열과 문자열의 5번째 문자 주소르 ㄹ루프를 돌면서 비교하고,



마지막으로 첫번째 글자를 0x45("E")와 비교하고,



"Congratulation !!" 문자열 출력 부분으로 이어진다.

별다른 연산이 없으므로 그냥 쭉 따라가면서 확인하면 되는듯..



p.s. 위 분석 내용을 IDA로 확인하면 아래와 같다.




'Reversing > reversing.kr' 카테고리의 다른 글

[Reversing.kr] Easy Unpack 100pt  (0) 2015.07.09
[Reversing.kr] Easy ELF 100pt  (0) 2015.07.08
[Reversing.kr] Easy Keygen 100pt  (0) 2015.07.08
[Reversing.kr] Easy Crack 100pt  (0) 2015.07.08
이 댓글을 비밀 댓글로