모의해킹/리버싱 (33) 썸네일형 리스트형 올리디버거를 사용한 인라인 패치 : 레나 챌린지 (Level 14) • 인라인 패치 : 실행이 자연스럽게 이어지도록 만드는 것 기간이 만료되어 프로그램을 실행시킬 수 없다.. 오늘은 인라인패치로 라이센스를 우회할 예정이다. 레지스터를 임의의 값을 입력을 하면 등록 실패 메시지가 출력이 된다.. Call Stack에서 메시지 박스를 호출하는 위치를 확인한다. 메시지 박스를 호출하는 곳으로 가서 브레이크포인트를 걸어준 다음 실행을 시켜보자. 실행시키다 보면 레지스터 길이, 빈 공간에 따라 다른 메시지가 나오지만, 호출되는 곳은 똑같다.. 즉, 함수로 감싸져서 계속 재사용된다는 사실을 알 수가 있다. 메시지 박스 출력호출하는 앞부분에 브레이크 포인트를 걸어서 분석을 해보자. esp 따라가서 이 함수 자체가 어디선가 계속 호출된다는걸 아니까 find references를 통해서.. 안티디버깅 Exception과 중요한 API 정보 확인 : 레나 챌린지(Level13) 이번 문제도 레지스터를 등록하는 문제이다. • 정적 분석 visual C++ 6.0에서 컴파일된 프로그램이다. • 분석 시작 현재 프로그램은 안티디버깅 옵션이 걸려있어 올리디버그에서 실행을 시키면 Exception에 걸려서 실행이 안된다. 그렇기 때문에 올리디버그 옵션에서 예외처리를 설정해줘야 한다. 레지스터 등록 실패 메시지가 실행된 상태에서 메인 스레드의 Call Stack,에 가면 호출되어진 것이 스택에 쌓인 걸 볼 수 있다. 스택을 확인해 보자. 해당 위치에서 MessageBoxA를 호출했다는 걸 확인 브레이크 포인트를 걸어 레지스터 실패 메시지가 출력이 되게 다시 실행한다. 그다음 스택을 보면 004174B1으로 반환을 한다. 004174B1으로 이동을 하면 004174 AC에서 MessageB.. 난독화의 시작 (델파이 프로그램) : 레나 챌린지 (Level 12) PEiD Tool로 프로그램을 보면 델파이 프로그램이라는 걸 알 수 있다. • 분석 시작 문자열 검색을 통해 레지스터 등록 성공 및 실패 메시지를 찾는다. 이 문구가 제일 키 라이선스를 점검한느 곳 근처에 있을 문구이다. 박스 친 세 군데는 절대로 실행이 밑으로 보내지 않고 있다. 분석을 하다 보면 세 군대는 아무 의미 없는 것이다. 리버싱 방해를 하기 위해 넣음,,,,, 임의의 값으로 레지스터를 등록을 하려고 하면 위 사진과 같이 에러 문구가 출력이 된다. 해당 문구가 나오는 위치를 문자열 검색을 통해 찾은 후, 분기점에 브레이크 포인트를 걸어준다. JNZ에서 JE로 수정을 해준다. 해당 문구가 출력이 되지 않고 프로그램이 동작한다.... 나는 이 문구를 출력해야 하는데,,, 첫 번째 브레이크 포인트 .. 파라미터로 라이센스 루틴 추적 : 레나 챌린지 (Level 11) 프로그램을 실행시키면 원하는 그림을 퍼즐로 만들어 게임을 하는 프로그램이다. 원래 있는 그림 말고 새로운 그림을 추가를 하려면 라이선스가 등록이 되어있야 추가를 할 수 있지만, 프로그램을 보면 라이선스를 등록할 수 있는 공간이 존재하지 않는다. • 분석 시작 올리디버거에 프로그램을 올린 다음 문자열 검색을 통해 "For registered users only" 문구를 검색해준다. 해당 분기점에서 브레이크 포인트를 걸어준다. ZFlag가 1이 키 때문에 JE가 점프가 되면서 "For registered users only"가 실행이 되기 때문에 JE를 JNZ로 수정을 한 다음 저장을 해준다. 정상적으로 새로운 이미지를 올릴 수 있다. 이런 방식으로도 가능하지만 계속 라이선스를 검색할 수 있기 때문에 루틴 .. 비주얼베이직(VB) GUI 디컴파일 분석 : 레나 챌린지 (Level 10) • 첫 번째 파일 분석 (Tut.ReverseMe1.exe) ReverseMe 프로그램을 실행시키면 올바른 레지스터 값을 넣어야 하는 문제이다. 디컴파일러 툴을 사용해 분석을 할것이다. Fom1에 들어가 Register me을 누르면 해당 ID값을 확인해 Code에서 일치하는 함수로 이동한다. Register me 주소는 402814, Nag 주소는 402C17이다. 올리디버그 툴을 사용해 두 개의 주소에 브레이크 포인트를 걸어준다. NAG 부분을 바로 리턴으로 수정을 해준다. Nag 버튼을 눌러도 반응을 하지 않는다. F8로 한 단계씩 실행시키다 보면 스택에 내가 입력한 1234랑 I'mlena151이랑 비교를 하는 거 같다. 해당 문자를 입력하면 레즈스터가 등록이 된다. • 두 번째 파일 분석 (CC.. 비주얼베이직(VB) 프로그램 시리얼 키 획득 : 레나 챌린지 (Level 9) 프로그램을 실행시키고 F8를 눌러 하나씩 실행시키다 보면 시리얼 키처럼 보이는 문자가 보인다... 설마,.,, 해당 문자를 입력을 하니 시키리얼 키가 등록이 되었다.... Artgem 크랙 : 레나 챌린지 (Level 8) • 분석 시작 프로그램을 실행시킨 후, 레지스터를 등록을 하기 위해 임의의 키 값을 입력을 했을 때, 해당 키값이 유효하지 않다는 메시지가 출력이 된다. 프로그램을 디버그에 올린 문자열 검색을 통해 Invalid Key 를 입력을 해서 해당 주소위치를 찾는다. 원래는 분기점을 찾아 해당 명령어를 JMP로 수정을 했으면 통과를 했지만, 이 프로그램은 key Check라고 내가 쓴 부분에서 계속 key 값을 체크한다. XOR EAX, EAX 에서 초기화를 해준다.. Nop으로 수정을 해준 다음 파일을 저장한다. 레지스턴가 등록이 되었다. Mr bills 라이센스 등록 우회 : 레나 챌린지 (Level 7) Visual C++ 7.0으로 컴파일되어 있는 프로그램이다. • 분석 시작 프로그램 실행 화면 해당 프로그램을 실행 시킨 후, 임의의 라이센스를 입력했을 때, 유효하지 않는 라이센스라는 문구가 출력이 된다. 디버그를 통해 해당 문구를 문자열 검색 기능을 이용하여 찾는다. JNE를 JMP로 수정을 한 다음 프로그램을 실행 시킨다. 임의의 라이센스를 입력을 했는데,, 성공적으로 라이센스가 등록이 되었다. 라이센스 문구가 없어졌다. 이전 1 2 3 4 5 다음