1355 Commits

Author SHA1 Message Date
Ben Gruver
ec28400394 Switch to new parameter syntax
The new syntax is:
.param p1, firstParamName

which is closer to the existing local syntax:
.local v0, someLocal:I
2013-04-16 00:24:46 -07:00
Ben Gruver
4a2b9ef40c Change totalmethodRegisters and methodParameterRegisters to scoped method attributes 2013-04-15 22:05:07 -07:00
Ben Gruver
dcd5df117a Add token+text for I_LINE imaginary token 2013-04-15 22:05:07 -07:00
Ben Gruver
feed0d1b84 Change syntax of const/high16 and const-wide/16
The literal is now specified as the post-shifted literal value, rather
than the pre-shifted 16 bits
2013-04-15 22:05:03 -07:00
Ben Gruver
38d0921bbb Fix the line number on instruction errors 2013-04-15 21:03:57 -07:00
Ben Gruver
87c1c0e054 Split out the build rule for the parser and tree walker 2013-04-15 20:47:53 -07:00
Ben Gruver
0dceb148f3 Update to latest antlr3/string template 2013-04-15 20:47:53 -07:00
Ben Gruver
6c15046f2b Refactor smali to use dexlib2
Array data instructions aren't working yet
2013-04-15 20:47:00 -07:00
Ben Gruver
ab73502b60 Massage the try blocks before writing them out to a dex file 2013-04-14 18:36:05 -07:00
Ben Gruver
8c3d16b7ee Add logic to TryListBuilder to merge contiguous try blocks with identical handlers 2013-04-14 18:14:06 -07:00
Ben Gruver
5916df9999 Port TryListBuilder from dexlib 2013-04-14 17:17:00 -07:00
Ben Gruver
bddef6af3c Always use one of 2 pre-built ImmutableBooleanEncodedValue instances 2013-04-13 21:44:56 -07:00
Ben Gruver
f24f26738d Add AnnotationVisibility.getVisibility(String) 2013-04-13 21:44:18 -07:00
Ben Gruver
ddf18a996e Add convenience constructor for ImmutableClassDef 2013-04-13 20:19:41 -07:00
Ben Gruver
8979759556 Gracefully handle duplicate fields/methods in baksmali 2013-04-13 18:55:34 -07:00
Ben Gruver
0a18ea7f8b Separate direct/virtual methods and static/instance fields in the ClassDef interface
This is unfortunately required to support not-quite-well-formed dex files
containing duplicate static/instance fields, or duplicate direct/virtual methods,
which dalvik inadvertently allows.

In cases when there are duplicate fields/methods in the same category, we
unambiguously remove/hide the latter duplicate fields/methods.
2013-04-13 16:25:37 -07:00
Ben Gruver
5b99529feb Remove unneeded TODO 2013-04-12 00:03:41 -07:00
Ben Gruver
2363e6e43c Gracefully handle unknown instructions 2013-04-11 23:58:43 -07:00
Ben Gruver
5fa302678c Add support for custom inline tables 2013-04-10 21:14:46 -07:00
Ben Gruver
a55990c876 Re-enable deodexing in baksmali
It's not quite working yet.
2013-04-09 23:45:48 -07:00
Ben Gruver
fd258ad543 Add support for class path entries that look like dalvik-cache entries 2013-04-09 23:44:06 -07:00
Ben Gruver
2887ade533 Remove unneeded/unused getFormat() method in UnresolvedOdexInstruction 2013-04-09 23:43:02 -07:00
Ben Gruver
45dfbd6d58 Remove invalid assert 2013-04-09 23:42:33 -07:00
Ben Gruver
39b3a7c5a9 Fix issue when deodexing invoke-object-init/range instruction 2013-04-09 23:42:20 -07:00
Ben Gruver
ac2686b3fc Add the ability to parse dependencies from odex files 2013-04-09 23:41:27 -07:00
Ben Gruver
7172de2aab Always write out the register info in numeric order 2013-04-09 21:17:38 -07:00
Ben Gruver
c017b06cd0 Add a register info test for the case of multiple start instructions 2013-04-09 20:34:22 -07:00
Ben Gruver
5c6cad2822 Fix an issue when there's a dir with the same base name as a class path entry 2013-04-09 17:42:37 -07:00
Ben Gruver
7e58d497ef Improve the performance of the IndentingWriter 2013-04-09 17:42:33 -07:00
Ben Gruver
a0c24f1c9f Fix issue with how the set of interfaces a class implements is calculated 2013-04-08 23:16:22 -07:00
Ben Gruver
541b934948 Fix an issue when merging two interface types 2013-04-08 22:17:56 -07:00
Ben Gruver
8c2d92d954 Enforce strict reference equality for uninit ref register types 2013-04-08 21:45:22 -07:00
Ben Gruver
3f05570b6b Always use .equals for comparing RegisterType instances 2013-04-08 20:27:35 -07:00
Ben Gruver
de7afc64ca Improve register merging in the case of an unresolved type 2013-04-08 18:43:33 -07:00
Ben Gruver
d87770e69b Add a test framework for baksmali
This also adds a test for register info comments in constructors
2013-04-08 00:09:15 -07:00
Ben Gruver
059e1249b4 Use the correct destination register for invoke-direct on an <init> 2013-04-08 00:09:15 -07:00
Ben Gruver
b6c52bc254 Fix up some of the comments in RegisterType 2013-04-08 00:09:15 -07:00
Ben Gruver
02f1d6cc1a Use the correct register category for the uninitialized "this" reference 2013-04-08 00:09:15 -07:00
Ben Gruver
13993573b2 Fix the calculation of method parameter register in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
93aa50139c Refactor the way the baksmali options are handled 2013-04-08 00:09:15 -07:00
Ben Gruver
71a580878f Correctly handle fill-array-data instruction when building instruction list 2013-04-08 00:09:15 -07:00
Ben Gruver
c91b03ba45 Add support for generating register information 2013-04-08 00:09:15 -07:00
Ben Gruver
8887625162 Add some getter methods in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
9cb9c76d50 Add ability to build a ClassPath from a list of files 2013-04-08 00:09:15 -07:00
Ben Gruver
4bf810ee76 Add the parameter register count to the stored state in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
4cf7845ea4 Throw a NoClassesDexException for an apk/jar/zip with no classes.dex 2013-04-08 00:09:15 -07:00
Ben Gruver
e6d10fc788 Rename Format.payloadFormat to isPayloadFormat 2013-04-08 00:09:15 -07:00
Ben Gruver
77ebf6842f Add codeAddress field to AnalysisException 2013-04-08 00:09:15 -07:00
Ben Gruver
e3478f4fd4 Fix the calculation of the "this" register in MethodAnalyzer 2013-04-08 00:09:15 -07:00
Ben Gruver
8d74f47b45 Fix IndexOutOfBounds exception when there's a wide parameter 2013-04-08 00:09:15 -07:00