입소문으로만 들었던 Frida. 직접 사용해 보기로 했다.
(프리더
아니고 프라다 아니다.)
이상하게도 한국에는 소개된 블로그가 없었다..
기본적으로 DBus 를 타고 PC쪽이 client, 앱쪽이 server인 구조를 갖고 있다.
PC에서 스크립트를 작성해서 실행하면 된다.
다른 것보다 빌드가 제일 힘들었다... 프록시에.. VS2015에... Python Path에 공백 없어야 되고..
잘되던
nodejs 용 npm 도
안되서 Python 등등 그냥 집에서 다 빌드 해서 가져 왔다.
바로
frida-ps 를 치면 에러가 나올텐데 chcp 65001 등으로 콘솔 코드 페이지 바꿔 줘야 한다.
-안드로이드-
인터넷에 영어로 찾아보면 다 있는 내용인데 정리해 본다.
원하는 앱을 실행시키고, {경로}/frida-server (예) /data/local/tmp/frida-server를 실행하면 된다.
윈도에서는 frida-trace -U -i open "원하는 패키지명" 하면 바인딩 된다.
일단 프로세스에 Attach 하는 방법은, frida-ps 으로 pid를 찾고,
frida -U -p {pid} 로 Attach 하면 된다.
또는
app 이름 알면 앱으로 바로 Attatch 가능하다.
frida -U com.example.seccon2015.rock-paper-scissors
(실제 내가 해본 예제는 블로그에 올릴 수 없는 내용이라서...
글로만 서술했다. 죄송..)
아래는 인터넷에 돌아다니는 예제들인데,
작성 -> Attach 후 -> %load Examples.js 하면 앱 실행하면서 같이 돌아간다.
작성 -> Attach 후 -> %load Examples.js 하면 앱 실행하면서 같이 돌아간다.
Examples.js
//http://blog.mdsec.co.uk/2015/04/instrumenting-android-applications-with.htmlD alvik.perform(function () { var LockManager = Dalvik.use("com.github.orangegangsters.lollipin.lib.managers.LockManager"); var LockManagerInstance = LockManager.getInstance(); var AppLock = LockManagerInstance.getAppLock(); for(var i=1230; i<1235 64="" a="" accessing="" activity.hookme.overload="" activity="Dalvik.use(" after="" alvik="" and="" android.content.context="" application="Dalvik.use(" are="" arg="" args="" ava.available="" ava="" available="" button="" c.a.implementation="function" c.tostring="" c621f5aee06dad53e37c="" c="" call="" called="" cedricvb.be="" check="" class="" classes="" classname="" clicked="" client="" com.example.myapp.myactivity="" com.example.seccon2015.rock_paper_scissors.mainactivity="" com.onlycoin.android.secure.sslpinning="" com.test.test="" comment="" console.log="" console="" context="" crash="" currentapplication="" dalvik.perform="" defeating-ssl-pinning-in-coin-for-android="" defined="" do="" done="" else="" enumerate="" enumerating="" flag="" flankerhqd="" foo="" found="" frida="" function="" gist.github.com="" github.com="" got="" handler="" have="" here="" hook="" hookme="" how="" http:="" https:="" i="" if="" immediate="" implementation="function" in="" inning="" instrumentando-apps-android-frida="" is="" issues="" it="" java.enumerateloadedclasses="" java.lang.string="" java.perform="" java="" json.stringify="" know="" kr.repo.h2spice.yekehtmai.c="" la-es="" like="" line="" loaded="" log="" mainactivity.onclick.implementation="function" mainactivity="Java.use(" message="" not="" onclick="" oncomplete:="" one:="" onmatch:="" original="" our="" out="" package_info="" package_name="" post="" pre="" prettyphoto="" process="" question:="" refer="" result="" return="" rotlogix.com="" running="" s.tostring="" s="" seccon-2015-reverse-engineering-android-apk-2-400-writeup="" send="" set="" should="" show="" sign="package_info.signatures[0];" signs="" ss.tostring="" ss="" sslpinning.a.overload="" sslpinning="Dalvik.use(" str1="" str2="" t="" that="" the="" this.a.overload="" this.cnt.value="999;" this.cnt="" this.m.value="0;" this.n.value="1;" this.onclick="" this="" to="" tring1:="" tring2:="" v="" values="" var="" vm="" we="" when="" whenever="" won="" www.welivesecurity.com=""> 1235>
0 개의 댓글:
댓글 쓰기