Notice
Recent Posts
Recent Comments
Link
Tags
- UnCrackable level 1
- Directory traversal
- JAVA ClassLoader 취약점
- NoSQL
- getCachedIntrospectionResults
- SeeTheSharpFlag
- File Upload
- Android Backup
- Xamarin 분석
- mstg
- HacktheBox Mobile
- CVE-2014-0094
- DOM
- blind sql injection
- UnCrackable
- XALZ 압축해제
- HackTheBox
- Hackthebox cat
- xss
- nginx
- MariaDB
- login form
- mongoDB
- Android 6.0
- CVE-2022-22965
- Frida
- PortSwigger
- CVE-2010-1622
- JSP
- HackTheBox APKey
Archives
- Today
- Total
끄적끄적
[Frida] 기본 문법 본문
Java.perform(fn)
- 현재 스레드가 가상머신에 연결되어 있는지 확인하고 fn을 호출
Java.perform(function(){
/*
do sth
*/
})
Java.use(className)
- 변수와 메소드에 엑세스할 수 있는 클래스 객체를 반환
- 메소드 구현을 변경하려면 새로운 메소드를 덮어 씌워야 함
- *인스턴스를 반환하는 것이 아닌 클래스 객체를 반환함
- 앱에서 사용하는 클래스와 연동되는 myClass를 정의
- .implementation: 앱에서 정의된 메소드의 구현 내용을 재작성
Java.perform(function(){
var myClass = Java.use(com.mypackage.name.class)
myClass.MyMethod.implementation = function(param)
{
//do sth
}
})
Java.choose(className, callbacks)
- 힙에서 인스턴스화 된 객체 찾기 가능: className에서 인스턴스화된 객체를 callbacks으로 넘김
- callbacks: onMatch, onComplete
- onMatch: 실시간으로 인스턴스에 대해 호출
- onComplete: function()의 모든 인스턴스가 열거 된 뒤 호출
Java.perfrom(funtion(){
Java.choose(com.mypackage.name.class,
{
"onMatch":function(instance)
{
//do sth
console.log(instance.toString())
},
"onComplete":function()
{
}
})
})
Java.enumerateLoadedClasses(callbakcs)
- 로드된 모든 클래스를 열거
var className= "[패키지.클래스명]"
Java.performNow(function(){
Java.enumerateLoadedClasses(
{
onMatch: function(className)
{
send(className);
},
onComplete:function(){}
});
});
setImmediate(function)
- 애뮬레이션이 지연될 경우, 시간 초과로 연결을 자동 종료시키는걸 방지하기 위해 사용
setImmediate(function() { // prevent timeout
console.log("[*] starting script");
Java.perform(function() {
myClass = Java.use("com.package.name.class.name");
myClass.implementation = function(v) {
// do something
}
})
})
Overloading
- 하나의 클래스 내에 동일한 이름의 메소드가 매개변수 정보를 달리하여 존재하는 경우를 위해 사용
- CLI에 경고창이 띄워질 경우 해당 내용을 이용하여 오버로딩 매개변수 작성
myClass.myMethod.overload().implementation = function() {
// 입력받는 인수가 없는 메소드
// do something
})
myClass.myMethod.overload("[B", "[B").implementation = function(param1, param2) {
// 두 개의 바이트 배열을 인수로 입력 받는 메소드
// do something
})
myClass.myMethod.overload("android.context.Context", "boolean").implementation = function(param1, param2) {
// 앱의 context와 Boolean 값을 인수로 입력받는 메소드
// do something
})
Reference
'Security > Mobile' 카테고리의 다른 글
[ERROR] Read-only file system (0) | 2021.10.25 |
---|---|
[Frida] Useful Code (0) | 2021.10.20 |
[Frida] FridaLab (0) | 2021.10.17 |
[Frida] Hooking Code Sample(Python) (0) | 2021.10.17 |
[Android analysis] Android Dalvik Opcode(Smali Code) (0) | 2021.09.12 |
Comments