본문 바로가기

모의해킹/리버싱

(33)
PC 설젼(델파이 프로그램) : 레나 챌린지 (Level 6) 실행화면 시작 전, 나오는 Nag이다. • 분석 시작 PEID 툴을 이용해 델파이 프로그램인지 확인을 하였다. 프로그램을 디버그에 올려 실행을 시킨다. 위 사진과 같이 15일 프로그램을 사용할 수 있다는 문구가 있다. -> 체험판이기 때문에 이걸 크랙을 해야 한다. 문자열 검색을 통해 문구를 찾아준다. 해당 문구를 위 분기점에서 문구를 출력을 할지 안 할지 정하는 거 같다... 브레이크 포인트를 걸어 다시 시작을 한 다음 ZFLAG 1을 0으로 수정을 해보자. 해당 문구 구간이 통과가 되어 문구가 출력이 안된다. 이 구간에는 아직 체험판이라는 표시가 남아있다. 위와 같은 방법으로 문자열 검색을 통해 찾은 후, 해당 주소로 이동을 한다. 그 주소에서 분기점을 찾아 브레이크 포인트를 걸어주고 ZFALG을 1..
MFC 프로그램 크랙 : 레나 챌린지 (Level 5) VisualSite Designer 체험판 크랙 10번만 사용가능한 프로그램이다. • 크랙 해야 하는 부분 1. number of trial left 10 횟수 제한 우회 프로그램을 실행하기 전부터 체험판이라는 걸 확인하는 부분이 있는 거 같다. F8로 하나씩 실행을 시키다보면 프로그램이 실행이 되는 부분이 있다. 그 부분에 브레이크 포인트를 걸어 F7로 들어간 다음 다시 F8로 프로그램이 실행되는 부분까지 반복한다. 73DDC1CC 까지 들어가면 해당 부분은 MFC42 부분이기에 EXE이 아니기에 F2로 브레이크 포인트가 안 걸린다. 해당 부분은 Hardware 브레이크 포인트를 걸어줘야 한다. * 하드웨어 BP는 CPU단에서 거는 브레이크 포인트이다. F2는 소프트웨어 BP이다. F2를 사용해 브레이..
크랙 : 레나 챌린지 (Level 4) PixtopianBook 체험판 크랙 해당 프로그램은 안티 디버그 설정이 되어있어 디버그를 실행을 했을 때, 실행 화면이 출력이 되지 않는다. Ollyobg 툴에서는 옵션을 설정을 하면 무시를 할 수 있는 기능이 있다. 해당 부분을 진짜 프로그램처럼 수정을 해보자. 메모리쪽에서 해당 부분을 검색을 한다. 상태바에 있는 내용이 있는 주소인 4E4 BC6로 이동을 해보자. 지우고 싶은 (UNREFISTERED VERSION) 부분의 메모리를 NOP로 수정을 한 다음 파일을 저장한다. 해당 부분이 삭제된걸 확인할 수 있다. 다음 단계는 This is an unregistered version of.... 부분이다. 메모리에 가서 삭제할 문자열의 위치를 찾기 위한 검색을 진행한다. a에서부터 뒷부분을 a reg..
PE 분석 : 레나 챌린지 (Level 3) 2 실행 화면은 Level3과 같음 다른 점은 디버그로 열었을 때, Error 가 발생한다. EntryPoint가 7C90120F 위치에 있다. 분석방법 1. Entry Point 직접 가서 잡는다. -> 덤프 위치를 변경해 주면 된다. 2. PE 구조가 이상해서 에러가 발생이기때문에 PE구조 수정을 한다. 2.1 PE 구조를 비교를 해본다. PE 구조가 온전하지 않아 분석하기가 어렵다..... 다른 툴인 HxD를 사용하여 두개의 프로그램을 비교해 보자 F6을 눌러 다른 부분을 찾아준다. 위치는 D00F는 DF이다. PEview를 통해 확인해 보자. Size of Code가 40000400으로 변경이 되었다. 40을 00으로 수정 00000A00 -> 40000A00으로 수정이 되었다... 이렇게 다른 부분..
PE 분석 : 레나 챌린지 (Level 3) 1 Nags를 삭제해라,, 경고창을 없애라!! PE 구조를 파악하기 위해서 PEview 툴을 사용한다. Offset to New EXE Header가 가리키는 것은 새로운 해더의 위치(000000 C0)이다. Image Base(400000byte)의 1000byte 지점에 진입점이 있다는 뜻이다. 프로그램의 진입점은 401000점 이다. JE에서 점프를 진행을 해야 하는데 CMP EAX, 0에서는 거짓이 나오기 때문에 점프를 하지 않기 때문에 밑에 있는 MessageBox가 실행이 된다. (Nags 제거를 위해 JE를 JMP로 수정을 한다.) **우리는 공부가 목적이기 때문에 JMP가 아닌 EntryPoint를 수정을 해서 통과를 할 것이다 EntryPoint를 401024 번지로 수정을 할 것이다. 1...
라이센스 키 알고리즘 분석하기 : 레나 챌린지 (Level 2) 오늘의 목적은 Keyfile를 만드는 거이기 때문에 해당 파일을 삭제해 준다. Keyfile를 삭제를 하면 위 와 같은 메시지가 출력이 된다. OllyDbg로 해당 파일을 열고 확인을 하면, CreatFileA는 Keyfile.dat가 존재해야지 열린다. 해당 파일에 Notepad를 열어 abcd 입력 후, 파일 이름을 Keyfile.dat으로 수정을 해준다. 해당 버퍼에 abcd가 들어갔는지 확인을 한다. abcd가 잘 들어가 있다. 해당 데이터를 몇 바이트 읽었는지 확인을 한다. 실행을 시키다 보면 402173 주 속값의 데이터와 10 byte랑 비교를 하고 해당 값이 작으면 JL 부분에서 점프를 취한다. 즉, Keyfile.dat의 크기가 10byte 보다 크며 해당 부분은 무사히 통과할 수 있다...
라이센스 루틴 지나기 : 레나 챌린지(Level 1) 문제 정보 1. 새로운 license가 필요하다는 메시지가 출력이 된다. F8을 눌러 한 개씩 실행을 시키다 보면 lincense가 필요하다는 메시지가 보인다. 즉, 그 위 가상메모리 주소에서 CMP EAX , -1 (CreateFileA가 실패를 했다라는 의미)을 비교하고 맞으면 0040109A 주소로 점프를 하고, 값이 다르면 점프를 안 하고 메시지를 출력을 시킨다. JNZ -> JMP 로 변경을 해 해당 주소를 지나갈 때, 0040109A 주소로 점프를 할 수 있게 수정을 한다. F8로 계속 실행시키다보면 다른 곳에서 Keyfile is not vaild 메시지가 출력이 되면서 프로그램을 종료시킨다. JNZ에서 점프가 안되고 그 밑에 주소인 JMP가 실행이 되면서 Kefile is not vaild..
rev-basic-1 chall1.exe 프로그램을 실행시키면 chall0.exe와 같은 프로그램처럼 Input이 출력이 된다. "Correct"가 출력이 되기 위해서는 text eax, eax에서 비교를 한 결과로 인해 참과 거짓으로 나눠진다. Call chall1.7FF740E41000에서 호출을 하여 text에서 비교를 하는 거 같다. 호출되는 주소로 들어가 보니까 내가 입력한 aaaa 데이터를 하나 하나씩 비교를 해서 검사를 하는 거 같다. 해당 문자를 합치니까 Compar3_the_ch4ract3r 문자열이 된다.