[워게임] uncrackable 3 문제 풀이
15641 단어 Fridauncrakable3mobileFrida
기억이 잘안나는데 그냥 메모했던거 그대로 메모한다...
미래의 내가 언젠가 정리하겠지
uncrackable 3
/*frida 탐지하는 부분 우회!*/
function strstrhook(){
var frida = false;
Interceptor.attach(Module.findExportByName("libc.so","strstr"), {
onEnter: function (args) {
//this.haystack = Memory.readUtf8String(args[0]);
//this.frida= false;
var haystack = Memory.readUtf8String(args[0]);
if(haystack.indexOf("frida") != -1 || haystack.indexOf("xposed") != -1){
frida = true;
}
},onLeave: function(retval){
//console.warn("[*] success");
//console.warn("[*] retval : " + retval);
if(frida == true){
retval.replace(0x0);
}
}
});
}
/*루팅 탐지 우회*/
function level3_hooking(){
//sg.vantagepoint.util.RootDetection.checkRoot1() : boolean
var RootDetection = Java.use("sg.vantagepoint.util.RootDetection");
RootDetection.checkRoot1.implementation = function(){
console.log("checkRoot1 test");
// console.warn(retval);
return false;
}
RootDetection.checkRoot2.implementation = function(){
console.log("checkRoot2 test");
return false;
}
RootDetection.checkRoot3.implementation = function(){
console.log("checkRoot3 test");
return false;
}
}
/**/
function load_library(){
const System = Java.use('java.lang.System');
const Runtime = Java.use('java.lang.Runtime');
const VMStack = Java.use('dalvik.system.VMStack');
System.loadLibrary.implementation = function(library) {
try {
console.warn('System.loadLibrary("' + library + '")');
Runtime.getRuntime().loadLibrary0(VMStack.getCallingClassLoader(), library);
if(library.indexOf("foo") != -1){
Interceptor.attach(Module.findExportByName("libfoo.so","Java_sg_vantagepoint_uncrackable3_CodeCheck_bar"), {
onEnter: function (args) {
console.log("[*] open " + Memory.readUtf8String(args[0]));
},onLeave: function(retval){
//console.log("[*] Secret retval: " + retval);
console.log("[*] retval : "+retval );
retval.replace(0x1);
}
});
}
} catch(ex) {
console.log("");
}
};
}
Java.perform(function(){
strstrhook();
level3_hooking();
load_library();
})
- 근데 실행시킬때
frida -U -f [패키지명] -l [js파일].js
하면 안되고 frida -U -f [패키지명]
해서 실행시킨 후에 js 를 그대로 박아넣어야 됨.
- libfoo.so 에서 strstr을 직접 사용할 수 없음. 그래서 ptr_strstr을 만들어서 그안에 libc.so 파일안에있는 strstr 주소값을 넣어두고,
Author And Source
이 문제에 관하여([워게임] uncrackable 3 문제 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@1-3-1/워게임-uncrackable-3-문제-풀이
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
/*frida 탐지하는 부분 우회!*/
function strstrhook(){
var frida = false;
Interceptor.attach(Module.findExportByName("libc.so","strstr"), {
onEnter: function (args) {
//this.haystack = Memory.readUtf8String(args[0]);
//this.frida= false;
var haystack = Memory.readUtf8String(args[0]);
if(haystack.indexOf("frida") != -1 || haystack.indexOf("xposed") != -1){
frida = true;
}
},onLeave: function(retval){
//console.warn("[*] success");
//console.warn("[*] retval : " + retval);
if(frida == true){
retval.replace(0x0);
}
}
});
}
/*루팅 탐지 우회*/
function level3_hooking(){
//sg.vantagepoint.util.RootDetection.checkRoot1() : boolean
var RootDetection = Java.use("sg.vantagepoint.util.RootDetection");
RootDetection.checkRoot1.implementation = function(){
console.log("checkRoot1 test");
// console.warn(retval);
return false;
}
RootDetection.checkRoot2.implementation = function(){
console.log("checkRoot2 test");
return false;
}
RootDetection.checkRoot3.implementation = function(){
console.log("checkRoot3 test");
return false;
}
}
/**/
function load_library(){
const System = Java.use('java.lang.System');
const Runtime = Java.use('java.lang.Runtime');
const VMStack = Java.use('dalvik.system.VMStack');
System.loadLibrary.implementation = function(library) {
try {
console.warn('System.loadLibrary("' + library + '")');
Runtime.getRuntime().loadLibrary0(VMStack.getCallingClassLoader(), library);
if(library.indexOf("foo") != -1){
Interceptor.attach(Module.findExportByName("libfoo.so","Java_sg_vantagepoint_uncrackable3_CodeCheck_bar"), {
onEnter: function (args) {
console.log("[*] open " + Memory.readUtf8String(args[0]));
},onLeave: function(retval){
//console.log("[*] Secret retval: " + retval);
console.log("[*] retval : "+retval );
retval.replace(0x1);
}
});
}
} catch(ex) {
console.log("");
}
};
}
Java.perform(function(){
strstrhook();
level3_hooking();
load_library();
})
frida -U -f [패키지명] -l [js파일].js
하면 안되고 frida -U -f [패키지명]
해서 실행시킨 후에 js 를 그대로 박아넣어야 됨.Author And Source
이 문제에 관하여([워게임] uncrackable 3 문제 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@1-3-1/워게임-uncrackable-3-문제-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)