Node.js 에서 APK 파일을 읽어서 Java 파일로 만들어 줍니다.
js 파일과 같은 위치에 programs 폴더가 있어야 하고
그 안에 7-Zip, dex2jar-2.0, jd-cli-0.9.1 프로그램이 있어야 하고
apk, sources 폴더가 있어야 합니다.
apk 폴더 안에 풀고 싶은 apk 파일을 넣고 인자로 주면 sources에 풀립니다.
제가 만들었고 라이센스 없습니다.
apk2java
exports.apk2java = function(apkName){
var nodePath=process.cwd();
var programsPath=nodePath+"\\programs";
const exec = require('child_process').exec;
var d = new Date();
var folderName=d.getTime();
var srcPath=programsPath+"\\sources\\"+folderName;
console.log("Start APK -> Zip -> dex");
exec(programsPath+"\\7-Zip\\7z.exe x \""+programsPath+"\\apk\\"+apkName+"\" -y -o"+srcPath, (err, stdout, stderr) => {
if (err) {
console.error(err);
console.log("End - Fail.");
return;
}
if(stderr){
console.log("stderr");
//console.error(stderr);
}
console.log("Start APK -> Zip -> dex -> jar");
exec(programsPath+"\\dex2jar-2.0\\d2j-dex2jar.bat "+srcPath+"\\classes.dex "+"-o "+srcPath+"\\classes.jar", (err, stdout, stderr) => {
if (err) {
console.log("err");
console.error(err);
console.log("End - Fail.");
return;
}
if(stderr){
console.log("stderr");
//console.error(stderr);
}
console.log("Start APK -> Zip -> dex -> jar -> java");
exec("java -jar "+programsPath+"\\jd-cli-0.9.1\\jd-cli.jar -od "+srcPath+"\\javaSrc "+srcPath+"\\classes.jar", (err, stdout, stderr) => {
if (err) {
console.error(err);
console.log("End - Fail.");
return;
}
if(stderr){
console.log("stderr");
}
//console.log(stdout);
console.log("End - Success.");
});
});
});
}