wargame/reversing.kr 썸네일형 리스트형 Easy_KeygenMe 키젠 문제이다.키젠 문제는 네임과 시리얼의 관계를 알아내는것이 목적이다. 문제파일에 Readme.txt 를 읽어보면 시리얼이 주어지고, 해당하는 이름을 맞추란다.네임이 주어지고 시리얼을 맞추는것이면 해당하는 네임을 넣고 트레이싱하면 쉽게 구할수있다.하지만 이건 역으로 구하는 것이기 때문에 키 생성 알고리즘을 찬찬히 봐야한다. 일단 ida로 보면 해당하는 문자열을 받고 그 문자열을 한글자씩 가져와서, 차례대로 0x10,0x20,0x30이랑 xor시켜서 키를 생성한다. 그 헥스값 그대로 sprintf해서 메모리에 쓴다음, 사용자가 입력한 키값과 일치하는지 비교한다. 그래서 역으로 다시 한글자씩 가져와 xor시키는 코드를 짜보았다. import string prob="5B134977135E7D13" def s.. 더보기 Easy_ELF 먼저 실행시켜보자.간단히 입력을 받고 틀렷다고 출력을 해주었다. strace에 붙여본결과 딱히 anti리버싱은 되어있지 않은거 같다. ida에 붙여보면, 처음 start에서 libc_start_main을 부른다. 이때 준 인자값으로 가면 main함수인것을 알 수 있다. 입력받는함수 에 바로 따라나오는 함수가 입력한 값을 비교해 정답과 오답을 가려주는 함수이며, 이 함수가 0을 리턴하면 오답, 1을 리턴하면 정답이다. 일단 처음 2번째글자가 1인지 비교하고, 그리고 바로 뒤에서 첫번째, 2번째, 3번째 글자를 xor한다음, 4 번째 글자가 'X'인지 확인한다. 그리고 그 아래에서 xor한후 값과 비교를 하는데, 이는 python으로 쉽게 원래 비교값을 찾아냇다. 그래서 나온글자를 조합해보면 L1NUX이다 더보기 Easy Crack 방학때부터 리버싱 스킬향상을 위해 reversing.kr을 풀어보았다.일단 문제파일은 이것이다.실행한번 시켜보면,다음과 같이 간단한 입력을 할수있는 박스가 나온다.아무 입력값이나 주고 확인버튼을 누르면 다음과 같이 나온다.exeinfo로 봐서 c++로 작성된듯하고, 간단한문제니, 비교루틴을 찾을수 있을것이다.IDA에 어테치 해보았다.일단 패킹은 되어있지 않고,문자열부터 한번 훑어보았다. 다음과 같이 성공과 실패 문자열을 볼수 있다.저 성공 글자를 클릭해서 data영역으로 따라들어간다음, xref를 통해서 이 주소를 사용하는 곳으로 이동하였다.다행히 한곳밖에 없어, 쉽게 문자열 비교루틴을 발견할수 있었다. 디버깅을 통해, GeDlgItemTextA를 통해 입력한 문자열을 받아오는것을 알 수있으며, 따라가면.. 더보기 이전 1 다음