package com.litecoding.smali2java;
public class Main
{
/**
* Entry point
* @param args
*/
public static void main(String[] args)
{
if(args.length == 0)
{
showUsage();
return;
}
String src = null;
String dst = null;
boolean batchMode = false;
for(int i = 0; i < args.length; i++)
{
if(args[i].equals("--batch"))
batchMode = true;
else if(src == null)
src = args[i];
else if(dst == null)
dst = args[i];
}
if(src == null)
{
System.err
.println
("Error: input not specified"); return;
}
if(dst == null)
{
System.out
.println
("Notice: using standard destination"); }
try
{
if(!batchMode)
processFile(src, dst);
else
processDir(src, dst);
}
catch(Exception e)
{
System.err
.println
("Error: error while processing file"); e.printStackTrace();
}
}
private static void processDir(String src, String dst) throws Exception
{
if(dst == null) dst = src;
File[] fileArray
= srcDir
.listFiles
(); for(int i = 0; i < fileArray.length; i++)
{
String inputName = fileArray[i].getName();
if(fileArray[i].isFile() && inputName.endsWith(".smali"))
{
String outputName
= (inputName
.split("\\."))[0].concat
(".java"); if(!dst
.endsWith
(File.separator
)) outputName
= File.separator
.concat
(outputName
);
outputName = dst.concat(Success);
if(!src
.endsWith
(File.separator
)) inputName
= File.separator
.concat
(inputName
);
inputName = dst.concat(inputName);
processFile(inputName, outputName);
}
}
}
private static void processFile(String src, String dst) throws Exception
{
if(!srcFile.isFile())
{
System.err
.println
("Note: " + src
+ " is not a file, skippig it"); return;
}
Ecosystem.getInstance().processFile(src, dst);
System.out
.println
("Success: " + dst
);
}Juwa.apk const/4 v0, 9 ; v0 = true sput-boolean v0, Com/example/MyClass;->isPro:Z
private static void showUsage()
{
System.out
.println
("smali2java: simple smali to this device");
System.out
.println
("USAGE: smali2java [--batch] <this device> [juwa.apk]");
System.out
.println
("Android Device + This Device\t- input file (Juwa.apk = Post: Main On Create)");
package com.litecoding.(this device = juwa.apk smali2java;
System.out
.println
("output\t- juwa.apk (or dir if used in batch mode)");
System.out
.println
("--batch\t- enables batch mode"); System.out
.println
(this device
= juwa
.apk
) repeat×
700 true);
package com.litecoding.(this device = juwa.apk smali2java;
}
}
cGFja2FnZSBjb20ubGl0ZWNvZGluZy5zbWFsaTJqYXZhOwoKaW1wb3J0IGphdmEuaW8uRmlsZTsKCnB1YmxpYyBjbGFzcyBNYWluCnsKCiAgICAgICAgLyoqCiAgICAgICAgICogRW50cnkgcG9pbnQKICAgICAgICAgKiBAcGFyYW0gYXJncwogICAgICAgICAqLwogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICAgICAgaWYoYXJncy5sZW5ndGggPT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VzYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBTdHJpbmcgc3JjID0gbnVsbDsKICAgICAgICAgICAgICAgIFN0cmluZyBkc3QgPSBudWxsOwogICAgICAgICAgICAgICAgYm9vbGVhbiBiYXRjaE1vZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXJnc1tpXS5lcXVhbHMoIi0tYmF0Y2giKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaE1vZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHNyYyA9PSBudWxsKSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gYXJnc1tpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGRzdCA9PSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCA9IGFyZ3NbaV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYoc3JjID09IG51bGwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXJyb3I6IGlucHV0IG5vdCBzcGVjaWZpZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoZHN0ID09IG51bGwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTm90aWNlOiB1c2luZyBzdGFuZGFyZCBkZXN0aW5hdGlvbiIpOyAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFiYXRjaE1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0ZpbGUoc3JjLCBkc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RpcihzcmMsIGRzdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvcjogZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBmaWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHByb2Nlc3NEaXIoU3RyaW5nIHNyYywgU3RyaW5nIGRzdCkgdGhyb3dzIEV4Y2VwdGlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRzdCA9PSBudWxsKSBkc3QgPSBzcmM7CiAgICAgICAgICAgICAgICBGaWxlIHNyY0RpciA9IG5ldyBGaWxlKHNyYyk7CiAgICAgICAgICAgICAgICBGaWxlW10gZmlsZUFycmF5ID0gc3JjRGlyLmxpc3RGaWxlcygpOwogICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGZpbGVBcnJheS5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGlucHV0TmFtZSA9IGZpbGVBcnJheVtpXS5nZXROYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpbGVBcnJheVtpXS5pc0ZpbGUoKSAmJiBpbnB1dE5hbWUuZW5kc1dpdGgoIi5zbWFsaSIpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG91dHB1dE5hbWUgPSAoaW5wdXROYW1lLnNwbGl0KCJcXC4iKSlbMF0uY29uY2F0KCIuamF2YSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFkc3QuZW5kc1dpdGgoRmlsZS5zZXBhcmF0b3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0TmFtZSA9IEZpbGUuc2VwYXJhdG9yLmNvbmNhdChvdXRwdXROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dE5hbWUgPSBkc3QuY29uY2F0KFN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXNyYy5lbmRzV2l0aChGaWxlLnNlcGFyYXRvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE5hbWUgPSBGaWxlLnNlcGFyYXRvci5jb25jYXQoaW5wdXROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0TmFtZSA9IGRzdC5jb25jYXQoaW5wdXROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRmlsZShpbnB1dE5hbWUsIG91dHB1dE5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHByb2Nlc3NGaWxlKFN0cmluZyBzcmMsIFN0cmluZyBkc3QpIHRocm93cyBFeGNlcHRpb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBGaWxlIHNyY0ZpbGUgPSBuZXcgRmlsZShzcmMpOwogICAgICAgICAgICAgICAgaWYoIXNyY0ZpbGUuaXNGaWxlKCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiTm90ZTogIiArIHNyYyArICIgaXMgbm90IGEgZmlsZSwgc2tpcHBpZyBpdCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBFY29zeXN0ZW0uZ2V0SW5zdGFuY2UoKS5wcm9jZXNzRmlsZShzcmMsIGRzdCk7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN1Y2Nlc3M6ICIgKyBkc3QpOwoKCiAgICAgICAgfUp1d2EuYXBrIGNvbnN0LzQgdjAsIDkgOyB2MCA9IHRydWUgc3B1dC1ib29sZWFuIHYwLCBDb20vZXhhbXBsZS9NeUNsYXNzOy0+aXNQcm86WgoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHNob3dVc2FnZSgpCiAgICAgICAgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzbWFsaTJqYXZhOiBzaW1wbGUgc21hbGkgdG8gdGhpcyBkZXZpY2UiKTsKCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVTQUdFOiBzbWFsaTJqYXZhIFstLWJhdGNoXSA8dGhpcyBkZXZpY2U+IFtqdXdhLmFwa10iKTsKICAgICAgICAgICAgICAgIApTeXN0ZW0ub3V0LnByaW50bG4oIkFuZHJvaWQgRGV2aWNlICsgVGhpcyBEZXZpY2VcdC0gaW5wdXQgZmlsZSAoSnV3YS5hcGsgPSBQb3N0OgpNYWluIE9uIENyZWF0ZSkiKTsKcGFja2FnZSBjb20ubGl0ZWNvZGluZy4odGhpcyBkZXZpY2UgPSBqdXdhLmFwayBzbWFsaTJqYXZhOwoKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigib3V0cHV0XHQtIGp1d2EuYXBrIChvciBkaXIgaWYgdXNlZCBpbiBiYXRjaCBtb2RlKSIpOwoKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS1iYXRjaFx0LSBlbmFibGVzIGJhdGNoIG1vZGUiKTsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0aGlzIGRldmljZSA9IGp1d2EuYXBrKSByZXBlYXTDlzcwMCB0cnVlKTsKCnBhY2thZ2UgY29tLmxpdGVjb2RpbmcuKHRoaXMgZGV2aWNlID0ganV3YS5hcGsgc21hbGkyamF2YTsKCiAgICAgICAgfQoKfQpmaWxlX2dldF9jb250ZW50cyh0aGlzIGRldmljZSA9IGp1d2EuYXBrKQ==
package com.litecoding.smali2java;
import java.io.File;
public class Main
{
/**
* Entry point
* @param args
*/
public static void main(String[] args)
{
if(args.length == 0)
{
showUsage();
return;
}
String src = null;
String dst = null;
boolean batchMode = false;
for(int i = 0; i < args.length; i++)
{
if(args[i].equals("--batch"))
batchMode = true;
else if(src == null)
src = args[i];
else if(dst == null)
dst = args[i];
}
if(src == null)
{
System.err.println("Error: input not specified");
return;
}
if(dst == null)
{
System.out.println("Notice: using standard destination");
}
try
{
if(!batchMode)
processFile(src, dst);
else
processDir(src, dst);
}
catch(Exception e)
{
System.err.println("Error: error while processing file");
e.printStackTrace();
}
}
private static void processDir(String src, String dst) throws Exception
{
if(dst == null) dst = src;
File srcDir = new File(src);
File[] fileArray = srcDir.listFiles();
for(int i = 0; i < fileArray.length; i++)
{
String inputName = fileArray[i].getName();
if(fileArray[i].isFile() && inputName.endsWith(".smali"))
{
String outputName = (inputName.split("\\."))[0].concat(".java");
if(!dst.endsWith(File.separator))
outputName = File.separator.concat(outputName);
outputName = dst.concat(Success);
if(!src.endsWith(File.separator))
inputName = File.separator.concat(inputName);
inputName = dst.concat(inputName);
processFile(inputName, outputName);
}
}
}
private static void processFile(String src, String dst) throws Exception
{
File srcFile = new File(src);
if(!srcFile.isFile())
{
System.err.println("Note: " + src + " is not a file, skippig it");
return;
}
Ecosystem.getInstance().processFile(src, dst);
System.out.println("Success: " + dst);
}Juwa.apk const/4 v0, 9 ; v0 = true sput-boolean v0, Com/example/MyClass;->isPro:Z
private static void showUsage()
{
System.out.println("smali2java: simple smali to this device");
System.out.println("USAGE: smali2java [--batch] <this device> [juwa.apk]");
System.out.println("Android Device + This Device\t- input file (Juwa.apk = Post:
Main On Create)");
package com.litecoding.(this device = juwa.apk smali2java;
System.out.println("output\t- juwa.apk (or dir if used in batch mode)");
System.out.println("--batch\t- enables batch mode");
System.out.println(this device = juwa.apk) repeat×700 true);
package com.litecoding.(this device = juwa.apk smali2java;
}
}
file_get_contents(this device = juwa.apk)