@@ -19,11 +19,11 @@ def install_jadx
1919 end
2020
2121 def jadx_installed?
22- ! `ls #{ ApkToJava ::JADX } ` . empty?
22+ File . exists? ApkToJava ::JADX
2323 end
2424
2525 def dex_to_jar_installed?
26- ! `ls #{ ApkToJava ::DEX_TO_JAR } ` . empty?
26+ File . exists? ApkToJava ::DEX_TO_JAR
2727 end
2828
2929 def env_setup?
@@ -39,53 +39,68 @@ def initialize_setup
3939 end
4040
4141 module Operations
42- def convert_to_dex ( apk )
43- print_info "Converting to dex.."
44- `mkdir apkToJava`
45- `cp #{ apk } apkToJava/`
46- apk_name = apk . split ( '/' ) . last . split ( '.' ) . first
47- apk = "apkToJava/#{ apk_name } "
48- `mv apkToJava/#{ apk_name } .apk apkToJava/#{ apk_name } .zip`
49- `unzip apkToJava/#{ apk_name } .zip -d apkTojava/`
50- `#{ ApkToJava ::DEX_TO_JAR } apkTojava/classes.dex`
51- print_success "Done!"
52- `pwd` . chomp + "/apkTojava/classes.dex"
42+ TEMP_DIR = 'apkToJavaTmp'
43+
44+ def copy_apk ( apk )
45+ `mkdir #{ TEMP_DIR } `
46+ `cp #{ apk } #{ TEMP_DIR } /`
5347 end
5448
55- def dex_to_jar ( apk )
56- remove_existing_jar if jar_exists?
57- dex_file = convert_to_dex apk
58- print_info "Converting dex to jar.."
59- command = ApkToJava ::DEX_TO_JAR + " #{ dex_file } "
60- `#{ command } `
61- print_success "Done!"
62- `pwd` . chomp + '/classes-dex2jar.jar'
49+ def unzip ( apk_name )
50+ `mv #{ TEMP_DIR } /#{ apk_name } .apk #{ TEMP_DIR } /#{ apk_name } .zip`
51+ `unzip #{ TEMP_DIR } /#{ apk_name } .zip -d #{ TEMP_DIR } /`
52+ end
53+
54+ def create_dex
55+ `#{ ApkToJava ::DEX_TO_JAR } #{ TEMP_DIR } /classes.dex`
6356 end
6457
65- def jar_exists?
66- print `ls #{ `pwd` . chomp } /classes-dex2jar.jar`
67- !`ls #{ `pwd` . chomp } /classes-dex2jar.jar` . empty?
58+ def path_to_dex
59+ `pwd` . chomp + "/#{ TEMP_DIR } /classes.dex"
6860 end
6961
70- def remove_existing_jar
71- print_info "Removing existing jar.."
72- `rm #{ `pwd` . chomp } /classes-dex2jar.jar`
62+ def create_jar ( dex_file )
63+ `#{ ApkToJava ::DEX_TO_JAR } #{ dex_file } --force`
64+ end
65+
66+ def path_to_jar
67+ `pwd` . chomp + '/classes-dex2jar.jar'
7368 end
7469
7570 def clean_up
7671 print_info "Cleaning the mess.."
77- `rm -rf apkToJava `
72+ `rm -rf #{ TEMP_DIR } `
7873 print_success "done!"
7974 end
8075
76+ def open_code_in_gui ( jar_file )
77+ `#{ ApkToJava ::JADX } #{ jar_file } &`
78+ end
79+
80+ def convert_to_dex ( apk )
81+ print_info "Converting to dex.."
82+ copy_apk apk
83+ apk_name = apk . split ( '/' ) . last . split ( '.' ) . first
84+ unzip apk_name
85+ create_dex
86+ print_success "Done!"
87+ path_to_dex
88+ end
89+
90+ def dex_to_jar ( apk )
91+ dex_file = convert_to_dex apk
92+ print_info "Converting dex to jar.."
93+ create_jar dex_file
94+ print_success "Done!"
95+ path_to_jar
96+ end
97+
8198 def view_as_java_code ( apk )
8299 jar_file = dex_to_jar apk
83100 clean_up
84101 print_info "Opening in gui interface.."
85-
86- command = ApkToJava ::JADX + " #{ jar_file } &"
87102 print_success "Please be patient, apkToJava might take some time to load your project in gui interface"
88- ` #{ command } `
103+ open_code_in_gui jar_file
89104 end
90105 end
91106end
0 commit comments