google / smali

Other
174 stars 29 forks source link

Request for Dex compilation enhancement #28

Open developer-krushna opened 5 months ago

developer-krushna commented 5 months ago

Why this modified library is so speed in compilation, parsing while the original one is too slow to parse and compile ????

https://github.com/L-JINBIN/ApkSignatureKiller/tree/3a3e49157068887dcd8efabf2fcc5ad6cbbd88a2/dexlib2

sgjesse commented 5 months ago

Can you please explain the difference you are seeing?

If the input you are reading has been processed by R8, then https://github.com/google/smali/pull/6 might cause a difference. This will be version 3.0.0 vs 3.0.1. Otherwise the library move from https://github.com/JesusFreke/smali to here did not introduce any functional changes, basically just a namespace change.

developer-krushna commented 5 months ago

Can you please explain the difference you are seeing?

If the input you are reading has been processed by R8, then #6 might cause a difference. This will be version 3.0.0 vs 3.0.1. Otherwise the library move from https://github.com/JesusFreke/smali to here did not introduce any functional changes, basically just a namespace change.

.. i am asking you to enhance how a developer did it which is not currently possible on new smali lib.. so please enhance the Dex reading process, compilation process

sgjesse commented 5 months ago

I am still not sure I understand the exact issue. The reference to https://github.com/L-JINBIN/ApkSignatureKiller/tree/3a3e49157068887dcd8efabf2fcc5ad6cbbd88a2/dexlib2 is a 7-year old version (copy?) of dexlib2 are you using this, and was it patched to be faster?

Or are you seeing that using dexlib2 has gotten slower? In that case could you supply some benchmark to demonstrate the difference?

developer-krushna commented 5 months ago

I am still not sure I understand the exact issue. The reference to https://github.com/L-JINBIN/ApkSignatureKiller/tree/3a3e49157068887dcd8efabf2fcc5ad6cbbd88a2/dexlib2 is a 7-year old version (copy?) of dexlib2 are you using this, and was it patched to be faster?

Or are you seeing that using dexlib2 has gotten slower? In that case could you supply some benchmark to demonstrate the difference?

Until now i not able to make like that Enhancement by analysing each codes of that modified dexlib2 for latest dexlib2 that was really very time consuming + iam not properly familiar with such codes as you are.. and later i close the project and ask you.. if you understand. As of my research i have seen DexBuilder class have some extra codes that directly Insert classDef just like DexPool class . making it more enhancement while internClass

dexPool.internClass(classDef); this is too slow while interning classDef

I too not understand how can i explain you.. If you know MT Manager app which is really very powerful Dex editor app developed by him (modified dexlib2 creator) .. You can feel it's speed of Dex compilation (mean classDef intern) while Dex saving..That kind of enhancement i want for my project sir.. And it would be really nice to see your project with same compilation Speed..

Thank you.. you are really great ❤️

developer-krushna commented 3 months ago

I am still not sure I understand the exact issue. The reference to https://github.com/L-JINBIN/ApkSignatureKiller/tree/3a3e49157068887dcd8efabf2fcc5ad6cbbd88a2/dexlib2 is a 7-year old version (copy?) of dexlib2 are you using this, and was it patched to be faster?

Or are you seeing that using dexlib2 has gotten slower? In that case could you supply some benchmark to demonstrate the difference?

Hi sir..You got some ideas???

sgjesse commented 3 months ago

We have no current plans for working on the performance of dexlib2 for building DEX. In most cases it is best to generate DEX from java byte code (from Java or Kotlin code) using the D8 or R8 compiler.

developer-krushna commented 3 months ago

Sir i think you misunderstanding my question.. And i think you forgot the difference of D8 and dexlib2 library..these are too much different in there work.. Because we are Reverser we know dexlib2 is the the best project that can help us to decode dalvik Dex file .. It can help us to edit Smali code and building back to Dex file and much more things like my private project Dex strings Decryption etc.. But my problem is with compilation of Dex and speed in decoding of Dex ..Which is too slow not only on PC but also for android.. but the old modified dexlib2 that I shared you having some extra codes that helps in Dex decode and Dex compilation enhancement..

Sorry if you are not working on these plans..

developer-krushna commented 2 weeks ago

Hello sir.. finally I implemented enhancing code inside new version of smali library..and I have published a project please check it out

https://github.com/developer-krushna/Dex-Editor-Android/tree/main/app/src/main/java/com/android/tools/smali

Usage part

https://github.com/developer-krushna/Dex-Editor-Android/blob/d519da652e8f4682527206205dd79520ea5fe04c/app/src/main/java/modder/hub/dexeditor/ClassTree.java#L358