[Riversing]/[코드엔진] BASIC (20) 썸네일형 리스트형 [코드엔진] basic12 코드엔진 사이트에 들어가 basic12 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 우선 프로그램을 실행해보자. 위 사진과 같이 key 값을 입력받는 간단한 프로그램인 듯 하다. 하지만 check 버튼을 눌러도 아무 일이 벌어지지 않는 것으로 보아, 정확한 key 값을 입력하면 성공 메시지가 출력되도록 코드를 변경하라는 문제이다. Ollydbg를 이용해 정확한 분석 ㄱㄱ 우선 문제풀이에 힌트를 얻어보기 위해 올리의 text strings를 열어보자. 이전 문제에서 다뤄봐서 친근한 함수 이름이 보인다. GetDIgItemInt 함수로 이동해보자. 우선 이 함수에 bp를 걸고 F9로 진행해보았다. key 값을 임의로 '12345' 라고 입력해 보았는데 EAX에 1이 저장되었다. 이후 코드.. [코드엔진] basic11 코드엔진 사이트에 들어가 basic11 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) OEP와 Stolenbyte를 구하는 문제이다. 이전 문제들과 같이 언패킹 문제인 듯 하다. PEiD로 분석 ㄱㄱ UPX 패킹이 되어있다. Ollydbg 로 정확한 분석 ㄱㄱ 이전 문제들과 같이 POPAD를 찾았고 12byte의 Stolenbyte를 찾았다. 이 친구들을 메모해놓고 JMP문으로 이동. 위에 훔쳐진 코드가 NOP처리 된 것을 볼 수 있고, 아까 메모한 친구들을 여기에 넣어준다. 훔쳐진 코드를 찾아주었기 때문에 OEP 는 00401000 이 된다. 자세한 풀이는 9번과 같다. 2020/03/31 - [[Riversing] 코드엔진] - [코드엔진] basic9 [코드엔진] basic10 코드엔진 사이트에 들어가 basic10 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) OEP를 구하고 등록성공으로 가는 분기점의 주소를 주하는 문제이다. OEP를 구하는걸로 봐서 역시나 언패킹 문제인 것을 알 수 있다. Exeinfor PE를 이용해 확인 ㄱㄱ 이전 문제까지는 UPX 패킹이 주로 되어 있었으나 이번에는 Aspack이다. 크게 UPX와 크게 다르지 않으니 겁먹지 않고 Ollydbg로 확인 ㄱㄱ #이전 문제들과 같이 PUSHAD 에서 F8 키로 한번 진행 한 뒤, 스택에 저장한 주소를 찾아 하드웨어에 bp를 건 뒤 실행시키면 POPAD를 찾을 수 있다. 자세한 설명은 이전 글 참고. 2020/03/25 - [[Riversing] 코드엔진] - [코드엔진] basic6 [코드.. [코드엔진] basic9 코드엔진 사이트에 들어가 basic9 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) StolenByte를 구하는 문제이다. #StolenByte 란 쉽게 훔쳐진 코드이다. 패커가 이동시킨 코드의 윗부분 (보통 OEP 로부터 몇 개의 명령어) 이다. 이 경우 언패킹을 할시에도 정상 실행이 되지않는다. 하지만 숨겨진 코드를 다시 제자리에 가져다 놓고 덤프, IAT 복구를 하면 정상실행이된다. Upx 에서는 마지막 JMP 전 POPAD이후 일정 바이트의 코드를 의미한다. 먼저 PEiD로 확인해본 결과 UPX 패킹이 되어 있다. 프로그램을 실행시키면, 위와 같이 keyfile을 확인하라는 창이 뜨고 확인을 누르면 에러가 뜬다. 정확한 분석을 위해 Ollydbg로 확인해보자. 우선 언패킹을 하지.. [코드엔진] basic8 코드엔진 사이트에 들어가 basic8 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 실행파일의 OEP(Original Entry Point)를 구하는 문제이다. OEP를 구하는걸로 보아 언패킹하라는 문제같은데 정확히 파악하기 위해서 ExeinfoPE 를 사용해보겠다. UPX 패킹되어있다는 것과 패킹 명령어가 나와있다. Ollydbg로 언패킹 하는건 전의 문제에서 다뤘으니 UPX 프로그램으로 언패킹 ㄱㄱ 언패킹 된 파일을 올리로 열어보면 바로 OEP가 보일 것이다. [코드엔진] basic7 코드엔진 사이트에 들어가 basic7 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 우선 Exeinfo PE로 파일을 확인해보자. 패킹은 되어있지 않으니 olldbg로 정확한 분석 ㄱ 를 하기전에 프로그램을 실행시켜 보면 시리얼 넘버를 입력받아 맞으면 통과 아니면 에러인 단순한 프로그램 인 것 같다. 진짜로 ollydbg로 정확한 분석 ㄱㄱ Text Strings 를 확인해보면 에러, 통과 분기점과 시리얼 넘버처럼 보이는 숫자들이 보인다. 이동해서 확인해보자. 여러 함수들이 보인다. 정리해보자. (더보기를 눌러주세용 (__) ) -(0040106C ~ 00401078) GetDIgItemTextA 더보기 UINT WINAPI GetDlgItemText( _In_ HWND hDlg, _I.. [코드엔진] basic6 코드엔진 사이트에 들어가 basic6 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) Unpack을 한 후에 시리얼 번호를 찾는 문제이다. Exeinfo Pe 프로그램으로 파일을 분석해보면 UPX패킹이 되어있다고 뜬다. 05번 문제에서 UPX 프로그램을 이용해 언패킹 했으니 이번에는 ollydbg 와 ollydump 를 이용해서 언팩해보겠다. 처음에 PUSHAD에서 f8 키로 한번 진행시켜 레지스터 값을 스택에 저장한다. tail 점프 명령어를 실행하기전 레지스터의 값을 저장한 스택에 접근할 것이므로 0x19FF54의 주소에 하드웨어 브레이크를 건다. Dump Window -> [Ctrl + G = ESP] -> 마우스 오른쪽 클릭 -> Breakpoint ->Hardware, on ac.. [코드엔진] basic5 코드엔진 사이트에 들어가 basic5 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 등록 key 를 알아내는 문제이다. 우선 Exeinfo를 확인해 분석해보니 UPX 패킹이 되어있다는 것과, upx.exe -d 명령어를 통해 언패킹 할수 있다고 알려준다. 언패킹을 하지 않고 ollydbg 에서 OEP를 찾아 디버깅 해도 되지만 한번 upx.exe 를 활용해 언패킹 해보겠다. upx.exe를 다운/설치 해놓고, cmd 를 통해 위 사진과 같이 언패킹 할 수 있다. 언패킹을 했으니 05.exe 파일을 실행해보면 이름과 등록키를 입력하는 창과, Register now 버튼을 눌렀을때 시리얼 번호가 틀렸다는 창이 뜬다. ollydbg 를 이용해 정확한 분석을 해보자. ollydbg로 05.ex.. 이전 1 2 3 다음