[Riversing] (30) 썸네일형 리스트형 [코드엔진] basic14 코드엔진 사이트에 들어가 basic14 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) Name 과 Serial 넘버를 입력하는 프로그램 일 것 같다. Name은 CodeEngn으로 주어졌고 Serial 넘버만 구하면 된다. 일단 Exeinfo Pe로 분석 ㄱㄱ UPX 패킹이 되어있다. 이전 문제들에서 많이 다뤄봤으므로 바로 언패킹을 해준다. 프로그램을 실행해보자. 예상했던 것 처럼 name 과 serial 번호를 요구한다. 일단 임의로 아무 숫자나 넣어봤더니 역시나 오류가 뜬다. Ollydbg 로 정확한 분석 ㄱㄱ F8로 진행을 하다가 name 과 serial 번호를 위에서 한 것처럼 CodeEngn, 1234 를 입력했다. 내가 입력한 1234 는 EAX에 저장이 되었고, EAX 와 .. [코드엔진] basic13 코드엔진 사이트에 들어가 basic13 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 다짜고짜 정답이 뭐냔다. 우선 Exeinfo PE 를 사용해 분석해본다. 여기서 알 수 있는것은 이 프로그램은 .NET(닷넷)기반으로 짜여진 프로그램이다. => Ollydbg 사용 X 프로그램을 실행시켜보자. 위 사진과 같이 cmd창이 열리며 패스워드를 입력하라는 창이 계속해서 뜨고, 잘못된 패스워드를 입력하면 다시 시도하라는 에러가 뜬다. 디버거로 정확한 분석을 해야하는데 위에서 말했듯이 올리로는 분석이 어렵다. 그래서 JetBrains dotPeek 이라는 프로그램(닷넷 디버거)으로 분석 ㄱㄱ (https://www.jetbrains.com/ko-kr/decompiler/download/downlo.. [코드엔진] 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.. 이전 1 2 3 4 다음