리버서

코드엔진 베이직 6번 문제 : OEP와 시리얼번호 찾기 먼저 그냥 실행시켜봅시다. 이번 문제도 틀렸을때 문자열을 출력하는 함수를 찾고 살펴보면 되겠네요.디버거로 실행시켜봅시다. 처음 시작이 PUSHAD 네요. 패킹되었는지 확인해봅시다. UPX로 패킹되어있네요. OEP를 구해야하므로 언패킹을 해줍시다. 짠 코드엔진 베이직 5번 문제를 풀때와 똑같은 방법으로 압축을 풀어줍니다. 올리디버거로 열어볼까요? 이제 아까 띄웠던 문자열을 찾아봅시다. [마우스 우클릭]->[Search for]->[All referenced text strings] (프로그램에서 쓰인 문자열만 보여주는 기능) 바로 윗부분에 있네요. 더블 클릭으로 들어가봅시다. 시리얼번호가 보이네요. 그럼 OEP를 구해야겠죠? OEP는 프로그램이 시작되..
코드엔진 베이직 5번 문제 : 프로그램의 등록 키 찾기일단 다운받은 5번 문제를 실행시킵시다. ??-?? 아무것도 모르니 일단 " Register now ! "를 눌러봅시다. 틀렸다는 문자가 뜨네요.ㅜㅡㅜ 등록키를 찾으려면 이 프로그램을 디버거로 열어서 맞았을때 문자열을 출력해주는 함수를 찾으면되겠네요. 올리 디버거로 열어봅시다. 띠용..?? 올리디버거로 열자마자 보이는 명령어가 PUSHAD .. 그러므로 실행파일이 압축되어있나 확인해봅시다. UPX로 압축되어있었네요.먼저 압축을 풀어줍시다. CFF Explorer 를 열고 파일을 불러온 후 UPX Utility 를 눌러준 후, Unpack 을 눌러줍니다. 누른 후 이름을 지정하고 저장하기만 누르면 짠 요롷게 원래 실행파일 밑에 언패킹한파일이 나타납니다...
코드엔진 베이직 4번 : 디버거를 탐지하는 함수의 이름은?문제에서 프로그램이 디버거를 탐지한다 했으니 디버거를 사용하지 않고 문제를 실행시켜봅시다. 정상이라 뜹니다. 그럼 디버거를 사용해 실행시켜봅시다. 디버깅 당함이라 뜨네요! 베이직 문제 3번 풀이에서 썼던 올리디버거의 기능을 씁시다. [마우스 우클릭]->[search for]->[All intermodular calls] 들어가면 이 프로그램에서 사용한 함수만 나열됩니다. 제일 처음 쓰인 함수부터 보니 IsDebuggerPresent 라는 함수가 있네요. 이름부터 수상하니 더블클릭해서 들어가봅니다. 우선 이 함수의 역할을 알기 위해 bp를 걸고 실행시켜봅시다. 이 함수를 지나기 전 EAX의 값은 0 이지만 지난 후 EAX의 값은 1이 됩니다. 계속 ..
코드엔진 베이직 3번 문제 : 비주얼 베이직에서의 스트링 비교 함수 구하기 일단 그냥 실행시켜보면, 이런 창이 뜹니다. 대충 아무거나 치고 왼쪽 버튼을 누르면, 틀렸다고 에러가 뜨네요. 이 과정을 통해 RegCode부분에 문자열을 넣으면 문자열을 비교해주는 함수에 의해 에러가 뜨거나 성공이 뜬다는 것을 알 수 있습니다. 올리디버거로 열어봅시다. 짠 딱 봐도 하나하나 찾아 해석하기엔 무리가있어보이니 이 프로그램에서 사용된 문자열만 나타나게 하는 올리디버거의 기능을 사용합시다. [마우스 우클릭]->[search for]->[All referenced text strings] 이런 화면이 되었으면 많은 문자열 중에서 힌트를 찾아야겠죠?조금만 화면을 내리다보면 맨 아래에 이렇게 누가봐도 의심가는 부분이 나옵니다..
lim.dev
'리버서' 태그의 글 목록