

MainActivity class == 어플리케이션의 시작점
Java.perform(function() {
console.log(1234)
})
Java.perform(function(){ })• Java 가상 머신내에서, 입력한 스크립트 코드를 실행하는 함수
• Java Class, Method에 접근가능한 상태에서 실행
Java.perform(function() {
console.log("[*] Testing")
let lab_1 = Java.use("com.stl.stllab.lab_1")
lab_1.lab_test_01.value = 3872;
}
)
Java.use(class)• 안드로이드 앱에서, 특정 Java 클래스를 후킹하고, 해당클래스의 메서드 수정에 사용되는 함수
• 자바클래스를 동적로드 및 메서드 수정, 호출을 가로챌수 있음
• implementation() 함수를 이용해 기존 메서드를 덮어씌워, 새로운 내용으로 재작성 할 수 있음

Java.perform(function() {
Java.choose("com.stl.stllab.MainActivity", {
"onMatch" : function(a) {
a.stl_test_level_02()
console.log("[*] STL Test level 02 Hooking...")
},
"onComplete" : function() {
console.log("[#] level_02_hooking >>> Success\n")
}
});
})
Java.choose(classname, callback)• 생성된 Class의 Instance를 탐색하는데 사용되는 함수
• 특정 Class를 대상으로 원하는 작업 수행

Java.perform(function() {
var lab_03 = Java.use("com.stl.stllab.MainActivity")
lab_03.stl_test_level_03.overload("java.lang.String").implementation = function() {
console.log("level 03, overload test")
this.stl_test_level_03("test")
console.log("[*] Challenge Level 05 Hooking success")
}
})
overload("")• Java API 메서드로, Java 클래스에서 Overload 메서드 중 원하는 메서드를 선택하는데 사용
• implementation() 함수를 이용해 특정 메서드만 선택해, 해당 메서드 후킹 및 재정의에 유용
+) setImmediate(function({ }))
• 프로세스종료시, 백그라운드에서자동으로스크립트를재실행