mirror of
https://github.com/revanced/smali.git
synced 2025-05-23 18:16:23 +02:00

Previously the offset of the method prototype was 3 bytes from the instruction start for both instructions. This would put it somewhere in the middle of the register values and method reference. Changed it to the correct offset which is 6 bytes in both cases. 45cc Instruction Format op(8 bits) number_of_regs(4 bits) reg_g(4 bits) method_reference(16 bits) reg_d(4 bits) reg_c(4 bits) reg_f(4 bits) ref_e(4 bits) method_prototype(16 bits) Example of invoke-polymorphic using 45cc Instruction: fa302f0021030800 DexDump: invoke-polymorphic {v1, v2, v3}, Ljava/lang/invoke/MethodHandle; .invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (II)Ljava/lang/Object; // method@002f, proto@0008 4rcc Instruction Format op(8 bits) number_of_regs(8 bits) method_reference(16 bits) start_register(16 bits) method_prototype(16 bits) Example of invoke-polymorphic using 4rcc Instruction: fb092f0000000800 DexDump: invoke-polymorphic/range {v0, v1, v2, v3, v4, v5, v6, v7, v8}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;) Ljava/lang/Object;, (IIIIIIILjava/lang/String;)Ljava/lang/Object; // method@002f, proto@0008
About
smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android's Java VM implementation. The syntax is loosely based on Jasmin's/dedexer's syntax, and supports the full functionality of the dex format (annotations, debug info, line info, etc.)
Downloads are at https://bitbucket.org/JesusFreke/smali/downloads/. If you are interested in submitting a patch, feel free to send me a pull request here.
See the wiki for more info/news/release notes/etc.
Support
- github Issue tracker - For any bugs/issues/feature requests
- #smali on freenode - Free free to drop by and ask a question. Don't expect an instant response, but if you hang around someone will respond.
Some useful links for getting started with smali
Description
Languages
Java
52.6%
Smali
45%
GAP
1.6%
Lex
0.4%
Ragel
0.3%