Android virtual machine and deobfuscator
This version has a few fixes but mostly the new new Smali Debugger tool which allows you to step through smalivm executions line by line, set breakpoints, etc. It was an experiment to see if smalivm could easily be used as a library (it's easier now) and to play with Kotlin. Check it out and let me know what you think.
Version bump to 1.3.x because of some changes to the API.
Here's the change log.
It's been a while since the last release, and there have been quite a few changes. So, here's a release!
Object.getClass
emulation and peephole optimizationThis release fixes a lot of bugs and changes the output format to make it a little easier to read. Thanks to the many people who reported bugs. You brave souls!
Here's a quick overview of the changes:
aput
opsmonitor-enter
and monitor-exit
opcodes (used to be handled by UnknownOp)New release. It's not just a point release because there were some API changes in smalivm. Here's the changelog:
.field myInt:I = 0x42
throw
and move-exception
instance-of
and check-cast
opsjava.lang.reflect.Field.get()
emulated methodCode seems to be stable enough for a 1.0 release. The download is a little big, but there's an entire Android framework floating around in there, so there's not much that can be done without other tradeoffs.
Changes:
It's been a few years since this all started, but there is finally a milestone release for v1.0. The next few milestones will be focused on fixing bugs and shaking out any issues made by some of the drastic changes in the past several commits.
Changes:
Changes:
Changes:
if
s with constant predicatesExecutionGrapher
which gives a GraphViz compatible DOT file for an execution graph. Screen shots below.Here's a small example method graph to show what ExecutionGrapher
does. Each node in the graph is the execution of some instruction, along with all the relevant context at that point. This is before optimization:
Graph after optimization:
I ran this on some malware and it didn't crash. To celebrate, here's a release!