본문 바로가기

Study/Reversing14

Check your serial 실행시켜보면 다음과 같은 창을 볼 수 있다. 이름과 시리얼값을 임의로 넣어 실행해봐도 프로그램에 변화가 없다.Serch for > All intermodular calls 로 들어가서 cmp 라는 이름의 함수를 찾아보자. vbaVarCmpEq 부분의 함수를 찾아 break point 를 걸어본 뒤 이름과 시리얼값을 입력을 하면 내가 입력한 시리얼값과 입력한 이름에따른 시리얼값이 있음을 알 수 있다. 넣어보면 저 유니코드값이 만들어지는 시리얼값임을 알 수 있다 이재 시리얼이 만들어지는 과정을 찾아보자특별히 눈에띄는 이름은 없기때문에 각각 함수들을 call한 이후의 결과를 보아 어떤함수가 시리얼을 만드는 함수인지 확인해보자. 먼저 이 함수의 결과로 내가 입력한 이름이 0012F4DC 에 들어간다. 그리고 이.. 2015. 5. 30.
crackme by hackereh@! 이번문제 역시 시리얼 값을 찾는것이다. 시리얼값을 입력하지 않고 check 를 했을때 뜨는 메세지 박스를 통해 back to user 모드로 텍스트 박스의 위치로 가보자. 성공했을때 출력되는 문장이 보이는대 이 메세지박스를 출력하려면 다음의 분기문을 모두 통과 해야 한다. 중간에 있는 분기문들은EDI 에 있는값들을 하나씩 불러서 그것을 정해진 값들과 AND 연산을 하는대AND의 결과값이 0일때 ZF 가 1로 세워지므로 그것을 이용하여 JNZ 를 모두 통과해야 한다. 각각 숫자들은 0AD9A970BF5FC50D66개 가 있다. 내가 입력한 값들의 AL과 AND 연산을 하는대AL은 8비트만 신경쓴다.먼저 EDI는 내가 입력한 시리얼들인대 한글자 씩 불러와 비교를 한다.첫번째 시리얼은 0AD 와 비교되는대이것.. 2015. 5. 29.
crackme5 crackme5를 실행시켜보면 다음과 같은 창을 볼 수 있다. Enter your serial 을 지우고 원하는 시리얼 값을 입력하면 그에따른 결과가 나온다. 스크롤을 조금 내려보면 성공과 실패 메세지를 분기하는 부분과 어떤 값을 비교하는 함수가 보인다. 이 분기문에서 값이 같다는 결과가 나와야 한다.이때 비교하는 시리얼 값이 만들어지는 과정이 나와 있는대 이미 있는 문자열을 가지고 증가시키고 두 키값을 연결(cat)시켜서 시리얼 값을 만든다. 그리고 마지막에 내가 입력한 문자열 string2와 만들어진 시리얼 값 string1 을 비교하여같다면 성공 문자를 출력하게 된다.이 프로그램의 성공 시리얼값은 L2C-57816784-ABEX 을 입력하면 성공하는 것을 볼 수 있다. 2015. 5. 28.
crackme4 crackme4 프로그램을 실행시켜보면 다음과 같은 창을 볼 수 있다 어떤 값을 입력해도 Registered 버튼이 활성화 되지않는다.Serch for 에서 All intermodular call을 하면 프로그램에서 call하는 모든 함수를 볼 수 있다. 어떤 값을 Check한다는 함수가 보이는 곳으로 들어가면 strcmp 문장을 비교하는 부분이 보인다.이부분에 break point를 걸고 입력을 시작하면 strcmp 부분에서 걸리는것을 확인할 수 있다.이때 스택에 EAX 와 ECX 값을 넣고 비교를하는대 ECX 값을보면 '2186275' 값이 있다.이 값을 넣어보면 문제가 해결되는것을 확인할 수 있다. 2015. 5. 27.