Study

    Framaroot 분석-1

    이번에 대학 학생 모임에서 세미나 발표 준비를 하면서 공부했던 내용에 대한 포스팅입니다. 비록 시연부분에서 실패해서 발표는 다른 내용으로 했지만 공부한 내용들이 있기 때문에 블로그에 남김니다. What is Framaroot? Framaroot는 여러 Device들에 맞는 여러 Rooting Exploit을 포함하고 있는 Rooting 어플입니다. Superuser와 su 프로그램이 포함되어 있으며, 이들은 Android 2~4 버전에서 동작합니다. 자세한 내용은 http://forum.xda-developers.com/showthread.php?t=2130276 를 참고하시면 됩니다. 여러가지 Exploit이 있지만 제 폰인 Vega Iron에서는 Gandalf라는 Exploit으로 Rooting을 성..

    .apk 파일 정적 분석 방법2

    지난 글에 이어서 apktool을 이용하여 디컴파일 하는 방법에 대해 설명하겠습니다. 아래 툴이 필요합니다. Apktool Apktool 폴더에서 Shift + 마우스 우클릭 -> 여기서 명령창 열기 를 합니다. (apktool 폴더의 위치를 환경변수 Path에 등록시킨 후 아무데서나 명령창을 실행시켜도 됩니다.) apktool.bat d [apk 파일의 위치] 실행 디컴파일된 파일들이 현 위치에 폴더로 생성된 것을 볼 수 있습니다. 아래는 AndroidManifest.xml 파일의 내용입니다. 암호화가 안돼있어 내용을 확인할 수 있습니다. Smali 코드의 위치는 디컴파일된 폴더의 smali 폴더 안에 있습니다. 이전에 소개한 압축해제를 통한 방법과 이 방법을 이용하여 apk 파일의 정적 분석을 하시면..

    .apk 파일 정적 분석 방법

    최근 Android apk 파일 분석에 관심을 가지게 되어 조금씩 연습을 하고 있습니다. 이번 포스팅은 apk 파일 분석을 시작하면서 제일 먼저 접한 정적 분석 방법에 대한 내용입니다. 정적 분석 방법에는 압축해제를 통한 java source를 얻는 방법과 디컴파일을 통한 smali code를 얻는 방법 두 가지가 있습니다. 이번 글에서는 압축해제를 통한 방법을 다음 글에서는 디컴파일을 통한 방법을 소개하겠습니다. 대상 파일은 악성코드 샘플입니다. 압축해제를 통한 java source를 얻는 방법입니다. 우선 아래 툴들을 미리 구합니다. Dex2jar, jd-gui 다음 apk 파일의 확장자를 zip으로 변경한 후 압축을 풉니다. 여기서 필요한 파일은 classes.dex 파일입니다. AndroidMan..

    CodeEngn Basic Clear

    끝~~Basic 문제를 모두 풀었습니다~!

    CodeEngn Basic 20

    파일 안에 있어야 할 데이터의 HEX값을 찾아야하는 문제입니다. 아래는 파일을 그냥 실행한 경우입니다. 아무것도 없는 파일이 실행됩니다. 파일을 올리디버거를 이용해 여시면 CreateFile 함수를 통해 파일에 접근하는 핸들을 리턴한 후 ReadFile을 통해 파일의 데이터를 불러는 것을 확인할 수 있습니다. ReadFile 부분을 자세히 보시면 HEX로 12 즉 DEC로 18byte를 읽어오도록 설정하고 있습니다. 파일 호출이 끝난 다음에도 제대로 읽어왔는지 확인하고 있습니다. 분석을 위해 파일 안에 임의의 값으로 18byte를 채워넣고 실행해보겠습니다. (크랙된 창에서 CodeEngn! 이 나타나는 걸로 봐서 파일을 통해 입력받는 듯합니다. 그래서 CodeEngn!이 포함된 문자열로 문제를 풀어보겠습..

    CodeEngn Basic 19

    이번에는 PEiD 가 아닌 exeinfope 라는 툴로 살펴보겠습니다. http://www.exeinfo.xn.pl/ 사이트인데 접속이 안되네요. 아래에 파일 올려놓았습니다. Autoit으로 프로그래밍했고 upx 패킹이 되어있네요. Autoit은 스크립트언어의 일종입니다. 배우기 쉽데요. ㅋ 참고로 autoit 은 자체적으로 upx 패킹을 지원합니다. 올리디버거로 직접 언패킹을 하려 했지만 지식과 경험의 부족으로 툴을 사용하였습니다. 어떤 분이 autoit으로 upx 툴을 만드셨더라구요. http://blog.naver.com/seongwk/70122005613 여기서 받으실 수 있습니다. 못 받으시는 분들은...역시 아래에 파일을 올렸습니다. 이제 문제 풀이에 들어가겠습니다. 먼저 언패킹을 해주세요. ..

    CodeEngn Basic 18

    문제입니다. 아래는 Serial을 임의로 입력하였을 경우 결과창입니다. 올리디버거로 문제파일을 실행시킵니다. 문제 풀이방법은 지금까지와 동일합니다. 코드창 -> 마우스 우클릭 -> Search for -> All referenced text strings 를 클릭합니다. 이제 G0od이나 Your serial is correct 부분으로 이동합니다. 이동한 후 위로 올라가면 분기점과 lstrcmpi 함수를 호출하는 부분이 있습니다. 저 함수를 쓰는 것으로 보아 함수의 인자로 시리얼과 입력한 키를 넘겨 비교를 하여 맞는지 틀린지 판단하는 것을 알 수 있습니다. 즉, 함수를 콜하는 부분에 BreakPoint를 지정하면 인자로 보내지는 시리얼값을 확인할 수 있습니다.

    CodeEngn Basic 17

    이번에는 거꾸로 Name을 구하는 문제입니다. 실행한 화면은 다음과 같습니다. Name을 한 개만 입력하니까 더 입력하라고 하는 군요. 올리디버거를 통해 자세하게 살펴보겠습니다. 우선 입력받는 문자 수를 확인해야하므로 Please Enter More Chars… 부분으로 이동하겠습니다. (코드창 -> 마우스 우클릭 -> Search for -> All referenced text strings) 해당 위치의 코드입니다. 바로 위에 비교문과 분기점을 볼 수 있습니다. JGE(Jump if Greater than or Equal) 명령어는 >= 즉, 크거나 같을 경우 분기입니다. 이 명령어의 사용으로 바로 위에 있는 3이 입력하는 최소 문자길이 인 듯 합니다. 이를 1로 바꿔 문제 풀이가 가능하도록 수정하겠..

글을 읽어주셔서 감사합니다.

이 블로그는 Google 광고 수익으로 콘텐츠를 만들고 있습니다.