ClaudiuGeorgiu / Obfuscapk

An automatic obfuscation tool for Android apps that works in a black-box fashion, supports advanced obfuscation features and has a modular architecture easily extensible with new techniques
MIT License
1.09k stars 285 forks source link

Doesn't Rebuild with -obfuscators: CallIndirection, MethodOverload, Reflection, ClassRename, and FieldRename. #146

Closed Osama139 closed 1 year ago

Osama139 commented 1 year ago

Obfuscating apks with the above mentioned obfuscators doesn't rebuild and gives error, this happens to me every time. Can you please give me a solution for that? I have tried my best but doesn't make any difference. Error:

sudo docker run --rm -it -u $(id -u):$(id -g) -v "${PWD}":"/workdir" obfuscapk -p -i -o CallIndirection -o Rebuild -o NewAlignment -o NewSignature libremchat1.apk Inserting call indirections in smali files: 100%|█████████████████████████████████████████████████████████████████████████████████████████|[00:06<00:00, 335.71file/s] Inserting call indirections in smali files: 74%|█████████████████████████████████████████████████████████████████▌ |[00:05<00:01, 431.59file/s] Inserting call indirections in smali files: 100%|█████████████████████████████████████████████████████████████████████████████████████████|[00:02<00:00, 445.65file/s] Processing multidex: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████|[00:14<00:00, 4.81s/dex] Running obfuscators (Rebuild): 25%|████████████████████████▎ |[01:26<04:18, 86.08s/obfuscator]20/10/2022 09:15:11> [ERROR][obfuscapk.tool.Apktool][build()] Error during build command: I: Using Apktool 2.6.0 I: Smaling smali folder into classes.dex... Exception in thread "main" org.jf.util.ExceptionWithContext: Exception occurred while writing code_item for method Landroidx/annotation/RestrictTo$Scope;->values()[Landroidx/annotation/RestrictTo$Scope; at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1047) at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:346) at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:301) at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:58) at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:37) at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:426) at brut.androlib.Androlib.buildSources(Androlib.java:357) at brut.androlib.Androlib.build(Androlib.java:309) at brut.androlib.Androlib.build(Androlib.java:276) at brut.apktool.Main.cmdBuild(Main.java:255) at brut.apktool.Main.main(Main.java:81) Caused by: org.jf.util.ExceptionWithContext: Error while writing instruction at code offset 0x2 at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1320) at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1043) ... 10 more Caused by: org.jf.util.ExceptionWithContext: Unsigned short value out of range: 102929 at org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116) at org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:356) at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1280) ... 11 more

20/10/2022 09:15:11> [ERROR][obfuscapk.obfuscation][build_obfuscated_apk()] Error during apk building: Command '['/usr/local/bin/apktool', '--frame-path', '/tmp', 'b', '--force-all', 'obfuscation_working_dir/libremchat1', '-o', 'obfuscation_working_dir/libremchat1_obfuscated.apk']' returned non-zero exit status 1. 20/10/2022 09:15:11> [ERROR][yapsy_loaded_plugin_Rebuild_1.rebuild.Rebuild][obfuscate()] Error during execution of "Rebuild" obfuscator: Command '['/usr/local/bin/apktool', '--frame-path', '/tmp', 'b', '--force-all', 'obfuscation_working_dir/libremchat1', '-o', 'obfuscation_working_dir/libremchat1_obfuscated.apk']' returned non-zero exit status 1. 20/10/2022 09:15:11> [CRITICAL][obfuscapk.main][perform_obfuscation()] Error during obfuscation: Command '['/usr/local/bin/apktool', '--frame-path', '/tmp', 'b', '--force-all', 'obfuscation_working_dir/libremchat1', '-o', 'obfuscation_working_dir/libremchat1_obfuscated.apk']' returned non-zero exit status 1. Traceback (most recent call last): File "/workdir/obfuscapk/main.py", line 153, in perform_obfuscation (obfuscator_name_to_function[obfuscator_name])(obfuscation) File "/workdir/obfuscapk/obfuscators/rebuild/rebuild.py", line 20, in obfuscate obfuscation_info.build_obfuscated_apk() File "/workdir/obfuscapk/obfuscation.py", line 555, in build_obfuscated_apk apktool.build( File "/workdir/obfuscapk/tool.py", line 166, in build output = subprocess.check_output( File "/usr/local/lib/python3.10/subprocess.py", line 420, in check_output return run(popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/local/lib/python3.10/subprocess.py", line 524, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/usr/local/bin/apktool', '--frame-path', '/tmp', 'b', '--force-all', 'obfuscation_working_dir/libremchat1', '-o', 'obfuscation_working_dir/libremchat1_obfuscated.apk']' returned non-zero exit status 1. Running obfuscators (Rebuild): 25%|████████████████████████ |[02:11<06:33, 131.18s/obfuscator] Traceback (most recent call last): File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/workdir/obfuscapk/cli.py", line 189, in main() File "/workdir/obfuscapk/cli.py", line 171, in main perform_obfuscation( File "/workdir/obfuscapk/main.py", line 153, in perform_obfuscation (obfuscator_name_to_function[obfuscator_name])(obfuscation) File "/workdir/obfuscapk/obfuscators/rebuild/rebuild.py", line 20, in obfuscate obfuscation_info.build_obfuscated_apk() File "/workdir/obfuscapk/obfuscation.py", line 555, in build_obfuscated_apk apktool.build( File "/workdir/obfuscapk/tool.py", line 166, in build output = subprocess.check_output( File "/usr/local/lib/python3.10/subprocess.py", line 420, in check_output return run(popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/local/lib/python3.10/subprocess.py", line 524, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['/usr/local/bin/apktool', '--frame-path', '/tmp', 'b', '--force-all', 'obfuscation_working_dir/libremchat1', '-o', 'obfuscation_working_dir/libremchat1_obfuscated.apk']' returned non-zero exit status 1.

ClaudiuGeorgiu commented 1 year ago

Caused by: org.jf.util.ExceptionWithContext: Unsigned short value out of range: 102929

It's a known issue (see https://github.com/ClaudiuGeorgiu/Obfuscapk/issues/19#issuecomment-613382276). I'm closing this as duplicate of #19, thanks for reporting.