Giter Site home page Giter Site logo

baksmali doesn't handle certain cases with try/catch blocks correctly when deodexing unresolvable instructions. about smali HOT 8 CLOSED

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
baksmali doesn't handle certain cases with try/catch blocks correctly when deodexing unresolvable instructions.

from smali.

Comments (8)

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
Some additional discussion of this is in the comments on issue 29: 
http://code.google.com/p/smali/issues/detail?id=29

Original comment by [email protected] on 10 Jun 2010 at 2:36

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
Keep up the great work JF! :-)

P

Original comment by [email protected] on 10 Jun 2010 at 2:38

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
I've committed some experimental changes which should better handle cases like 
these. Please grab a copy of the ExperimentalDeodexChange branch and try it 
out, and let me know how it works for you :)

svn checkout http://smali.googlecode.com/svn/branches/ExperimentalDeodexChange 
smali

Original comment by [email protected] on 11 Jun 2010 at 5:38

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
So far so good... :-)

Original comment by [email protected] on 11 Jun 2010 at 12:54

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
Great! :)

I had an epiphany last night, which led to this implementation. Before, I was 
commenting out the dead code after a deodexeable instruction, because there 
were some cases where that following code wouldn't pass dalvik's validation, 
due to the missing register information from the replaced instruction.

But then I realized - dalvik doesn't validate dead code :). By always replacing 
the deodexable instructions with a throw, it renders the following code really 
dead. Before, in the cases where I was replacing them with a different invoke 
instruction, dalvik still thought that execution could continue on past the 
invoke, and so it would procede to validate the following code. Since execution 
can never procede past a throw, dalvik's verifier never reaches the following 
dead code, and I don't have to worry about making it verification safe - I can 
just leave it as-is instead of commenting it out. I just have to replace any 
other dead odex instructions in the following code with a throw as well.

Original comment by [email protected] on 11 Jun 2010 at 1:20

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
Just wanted to let you know that everything is well for me after your latest 
update. Deodexed Froyo is on my n1 with no issues atm. Keep up the good work JF!

Original comment by [email protected] on 12 Jun 2010 at 2:31

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
Great! Thanks for trying it out and letting me know Paul and jrEE2kX :)

Original comment by [email protected] on 12 Jun 2010 at 3:53

  • Added labels: ****
  • Removed labels: ****

from smali.

GoogleCodeExporter avatar GoogleCodeExporter commented on August 26, 2024
The changes have been merged to trunk, and are included in 1.2.3.

Original comment by [email protected] on 13 Jun 2010 at 9:03

  • Changed state: Fixed
  • Added labels: ****
  • Removed labels: ****

from smali.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.