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."); }); }); }); }