System/Windows

JavaScript using frida

Tribal 2017. 12. 14. 20:02

자바스크립트 코드(Function Hooking)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var handle = Module.findExportByName("msvcrt.dll""memset");
//var handle2 = Module.findExportByName("WS2_32.dll", "send");
var baseAddr = Module.findBaseAddress("msvcrt.dll");
 
console.log(">> Hooking Function <<");
console.log("[+] Handle : " + handle);
console.log("[+] msvcrt.dll baseAddr : " + baseAddr);
 
Interceptor.attach(handle, {
    onEnter: function(args) {
        console.log("onEnter : " + args[0]);
        var str = Memory.readByteArray(args[0], 8);
        console.log(str);
    },
    onLeave: function(retval) {
        console.log("onLeave:" + retval);
    }
});
 
//console.log("Done.");
 
setTimeout(function() {
    console.log("Done.");
}, 5000);
 
cs


자바스크립트 코드(Find Modules)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var f = new File("C:\\Users\\Tribal\\Desktop\\modules.txt""w+");
 
Process.enumerateModules({
    onMatch: function(module) {
        f.write("\n===============================================")
        f.write("\n- Module.name : " + module.name);
        f.write("\n- Module.base : " + module.base);
        f.write("\n- Module.size : " + module.size);
        f.write("\n- Module.path : " + module.path);
        f.write("\n===============================================")
        //console.log("");
        //console.log("- Module.name : " + module.name);
        //console.log("- Module.base : " + module.base);
        //console.log("- Module.size : " + module.size);
        //console.log("- Module.size : " + module.path);
        
    },
    onComplete: function() {
        console.log("[+] Process.enumerateModules Done.");
    }
});
 
cs


커맨드

1
2
3
4
$ frida -l [자바스크립트.js] -q -n [대상 프로그램 명]
- l : load file
- q : quiet, 필요하다면 제거해도 됨
- n : name, attach할 프로그램 
cs


System 권한이 필요한 경우(https://docs.microsoft.com/ko-kr/sysinternals/downloads/psexec)

1
$ Psexec -i -s -d CMD
cs



참고