시리얼이 5B134977135E7D13 일때 Name이 무엇인지 알아내면 된다. 프로그램 실행모습 IDA참조하는 곳으로 가보자여기서 유심히 보아야 할 곳이 보인다.Name을 입력받아서 문자열 길이만큼 반복문을 돌린다. i 가 3이 되면 0으로 초기화 해주고문자열[i] ^ v7[i-1] , 즉 xor 연산을 해줘 버퍼에 저장해주는듯 하다.그리고 시리얼과 연산된 버퍼를 비교해 분기한다.IDA에서 더 알아보기엔 무리가 있으니 x32Dbg에 붙여보자 x32Dbg위 IDA의 if ( i >= 3) i = 0; 이 있었다시피cmp esi, 3으로 비교를 해주고 xor esi, esi를 통해 0으로 초기화 해주는게 보인다.Name이 입력되면 [esp +10] 부터 차례로 10, 20, 30 을 넣어주고 있다.ec..
OEP를 찾으라고 한다. 프로그램 실행모습폼 하나만 덩그러니 띄워진다. PEID로 보자무엇으로 패킹된지 보이지 않는다. 열어서 직접보자 x32Dbg열어보니 upx나 aspack에서 보이는 pushad 가 보이지 않는걸 봐선 따로 압축, 복호화를 하는거 같은데... 내리면서 루틴이 끝나는 곳에 jmp가 있는지 보자점프하는 곳이 보인다. 이동해보면OEP가 나왔다. 너무 야매로 푼건가.. 싶기도 한데 뭐..
Reversing.kr 의 문제들은 CodeEngn과 다르게 설명이나 힌트없이 프로그램만 딸랑 있어 더욱 집중을 요하는듯 하다. 프로그램 실행모습시리얼을 찾아주면 될듯하다. IDA IDA에 올려 훑어보았다. 성공 실패 문자열과 위로 비교하는 구문들이 계속해 보인다. x32Dbg아무값이나 넣어주었다.입력된 문자열의 두번째 글자와 0x61 (a) 를 비교한다. 두번째 글자를 a로 바꿔주고 다시 진행해본다401150 으로 들어와 살펴보니.입력받은 문자열의 3번째부터 5y가 맞는지 검사한다. 바꿔주고 다시 진행반복문을 돌며 한글자씩 비교한다. 다시바꿔주고 진행입력받은 문자열의 첫번째글자가 0x45인지 비교한다. 제일 앞에 E를 넣어주고 다시 진행하면정답 !