JesusFreke@JesusFreke.com
d27ca7f7a6
Initial commit of analysis stuff.
...
So far, it only builds the AnalyzedInstruction list, and populates the
predecessors/successors of each instruction
git-svn-id: https://smali.googlecode.com/svn/trunk@566 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 08:11:00 +00:00
JesusFreke@JesusFreke.com
f3a83f9e4c
Minor comment change
...
git-svn-id: https://smali.googlecode.com/svn/trunk@565 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 08:10:50 +00:00
JesusFreke@JesusFreke.com
8fcc31d5f2
Add new CAN_CONTINUE flag to Opcode
...
git-svn-id: https://smali.googlecode.com/svn/trunk@564 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 08:10:43 +00:00
JesusFreke@JesusFreke.com
42e4ef4892
Refactor the opcode enum to have a flags field, to store the odexOnly and canThrow flags
...
And get rid of the instructionThrowTable in DeodexUtil
git-svn-id: https://smali.googlecode.com/svn/trunk@558 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 08:09:35 +00:00
JesusFreke@JesusFreke.com
f568b80d16
Moved DeodexUtil and Deodexerant classes to baksmali
...
git-svn-id: https://smali.googlecode.com/svn/trunk@556 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 08:09:19 +00:00
JesusFreke@JesusFreke.com
8a8b2a988b
Minor cleanup in DeodexUtil
...
git-svn-id: https://smali.googlecode.com/svn/trunk@555 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:56:38 +00:00
JesusFreke@JesusFreke.com
6512a81a11
whitespace and comment changes
...
git-svn-id: https://smali.googlecode.com/svn/trunk@554 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:56:31 +00:00
JesusFreke@JesusFreke.com
096d4ec5ca
Use getMethodString() instead of combining separate parts in DeodexUtil.deodexerizeCode()
...
git-svn-id: https://smali.googlecode.com/svn/trunk@553 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:56:25 +00:00
JesusFreke@JesusFreke.com
16a911620c
General cleanup/refactoring/maintentance
...
- Added some additional context information for exceptions in various locations
- Refactored all code offsets so that they use 2-byte code block address, instead of a byte offset.
- Additionally changed all "offset" terminology refering to code offsets to "address" instead
- Changed the way the getItemByIndex and getOffsettedItemByOffset work, so that they throw an
exception if the index/offset is -1/0.
- Added additional getOptionalItemByIndex and getOptionalOffsettedItemByOffset methods, to be used
in the cases where an index/offset of -1/0 is valid, to indicate the absence of an item
- Other misc cleanup/maintentance
git-svn-id: https://smali.googlecode.com/svn/trunk@552 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:56:16 +00:00
JesusFreke@JesusFreke.com
3ae5a27b60
Remove unused InstructionWriter class
...
git-svn-id: https://smali.googlecode.com/svn/trunk@551 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:55:08 +00:00
JesusFreke@JesusFreke.com
25df744c31
Delete unused InstructionReader class
...
git-svn-id: https://smali.googlecode.com/svn/trunk@550 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:55:02 +00:00
JesusFreke@JesusFreke.com
4610bfd7a9
Add FiveRegisterInstruction and RegisterRangeInstruction interfaces
...
Implement new interfaces on appropriate Instruction classes
git-svn-id: https://smali.googlecode.com/svn/trunk@549 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:13:09 +00:00
JesusFreke@JesusFreke.com
4238ac2dd1
Add missing interfaces to a couple of Instruction classes
...
git-svn-id: https://smali.googlecode.com/svn/trunk@548 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-12 07:12:55 +00:00
JesusFreke@JesusFreke.com
0f78b15cd7
Change the enum name of the execute-inline instruction from INVOKE_EXECUTE_INLINE to EXECUTE_INLINE
...
git-svn-id: https://smali.googlecode.com/svn/trunk@546 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:36:09 +00:00
JesusFreke@JesusFreke.com
1c6b6d7591
whitespace change
...
git-svn-id: https://smali.googlecode.com/svn/trunk@545 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:36:01 +00:00
JesusFreke@JesusFreke.com
be2472d6d7
Add support for the upcoming execute-inline/range odexed instruction
...
git-svn-id: https://smali.googlecode.com/svn/trunk@544 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:54 +00:00
JesusFreke@JesusFreke.com
c043c35800
Add execute-inline to the list of instructions that can throw an exception
...
git-svn-id: https://smali.googlecode.com/svn/trunk@543 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:42 +00:00
JesusFreke@JesusFreke.com
c9c2ec3d48
Add "support" for odexed instructions using Format3rms
...
Also, change the name of the invoke-*-range-quick opcodes to invoke-*-quick/range,
to be consistent with the naming scheme of non-odexed opcodes
git-svn-id: https://smali.googlecode.com/svn/trunk@542 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2010-01-01 22:35:35 +00:00
JesusFreke@JesusFreke.com
da3b7b1150
change execute_inline to execute-inline, for consistency
...
git-svn-id: https://smali.googlecode.com/svn/trunk@538 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-31 22:34:37 +00:00
JesusFreke@JesusFreke.com
f29d8ae0b1
fix spelling of propogateRegisters method
...
git-svn-id: https://smali.googlecode.com/svn/trunk@529 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:06:09 +00:00
JesusFreke@JesusFreke.com
37885c5f82
Fix possible NPE
...
git-svn-id: https://smali.googlecode.com/svn/trunk@528 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:06:03 +00:00
JesusFreke@JesusFreke.com
64c389570e
Resolve inline methods lazily, to prevent issues when types for unused inline methods aren't present in the odex file
...
git-svn-id: https://smali.googlecode.com/svn/trunk@527 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:57 +00:00
JesusFreke@JesusFreke.com
f7c84c8c41
return the correct format for Instruction35s
...
git-svn-id: https://smali.googlecode.com/svn/trunk@526 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:50 +00:00
JesusFreke@JesusFreke.com
6325930f67
read in the field offset for Instruction22cs
...
git-svn-id: https://smali.googlecode.com/svn/trunk@525 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:43 +00:00
JesusFreke@JesusFreke.com
ba04c98bce
Whitespace fixes
...
git-svn-id: https://smali.googlecode.com/svn/trunk@523 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-25 23:05:28 +00:00
JesusFreke@JesusFreke.com
3ce2b6fcee
remove unneeded TODO
...
git-svn-id: https://smali.googlecode.com/svn/trunk@521 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:23 +00:00
JesusFreke@JesusFreke.com
5f758b60b4
fix an issue that occurs when a switch statement is the first instruction in a method
...
git-svn-id: https://smali.googlecode.com/svn/trunk@520 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:14 +00:00
JesusFreke@JesusFreke.com
b145895c49
remove an invalid assert
...
git-svn-id: https://smali.googlecode.com/svn/trunk@519 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:08:02 +00:00
JesusFreke@JesusFreke.com
146fbfd33a
Throw an error if a switch data pseudo-instruction is encountered when auto-fixing a method.
...
git-svn-id: https://smali.googlecode.com/svn/trunk@518 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:44 +00:00
JesusFreke@JesusFreke.com
a8ca776c1d
Remove unneeded TODO
...
git-svn-id: https://smali.googlecode.com/svn/trunk@517 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:33 +00:00
JesusFreke@JesusFreke.com
2e52e0e6e4
remove unneeded TODO: and added a new one
...
git-svn-id: https://smali.googlecode.com/svn/trunk@516 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-24 08:07:23 +00:00
JesusFreke@JesusFreke.com
2904f40603
Fix an issue when the current address immediatly after an AdvancePC debug instruction doesn't point to an instruction
...
git-svn-id: https://smali.googlecode.com/svn/trunk@515 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:18 +00:00
JesusFreke@JesusFreke.com
2ededb89b9
Don't set the encoded debug info when nothing needed to be changed
...
git-svn-id: https://smali.googlecode.com/svn/trunk@514 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:12 +00:00
JesusFreke@JesusFreke.com
e266117407
Add the offset past the end of the last instruction to the sparse arrays that translate between the new and old offsets
...
git-svn-id: https://smali.googlecode.com/svn/trunk@513 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 23:46:06 +00:00
JesusFreke@JesusFreke.com
01318cded8
use decodeHighUnsignedNibble instead of decodeHighSignedNibble for regB in Instruction22t
...
git-svn-id: https://smali.googlecode.com/svn/trunk@512 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:28:28 +00:00
JesusFreke@JesusFreke.com
311ee79fab
Complete and fix-up the implementation of autofixing instructions
...
git-svn-id: https://smali.googlecode.com/svn/trunk@511 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:28:21 +00:00
JesusFreke@JesusFreke.com
404816815f
use out.toByteArray() instead of out.getArray(), so we get a correctly sized array instead of the oversized internal buffer
...
git-svn-id: https://smali.googlecode.com/svn/trunk@509 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:49 +00:00
JesusFreke@JesusFreke.com
4433deb7dc
Use an int to store the 'base' value, when decoding a special debug opcode, to prevent an incorrect negative value
...
git-svn-id: https://smali.googlecode.com/svn/trunk@508 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:42 +00:00
JesusFreke@JesusFreke.com
91aa1ef2fa
Use the correct comparison for the keys, when writing out a sparse switch data pseudo-instruction
...
git-svn-id: https://smali.googlecode.com/svn/trunk@507 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:36 +00:00
JesusFreke@JesusFreke.com
526d617e05
When writing an Instruction31t opcode, align the offset to the switch/array data
...
git-svn-id: https://smali.googlecode.com/svn/trunk@506 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:30 +00:00
JesusFreke@JesusFreke.com
7570fe0382
Fix the way offsets are handled in Instruction21t and Instruction22t
...
Use a short internally for the offset, and validate the value in updateOffset()
git-svn-id: https://smali.googlecode.com/svn/trunk@505 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:23 +00:00
JesusFreke@JesusFreke.com
f6c7706102
ensure the string index is <= 0xFFFF before writing a string-const instruction
...
git-svn-id: https://smali.googlecode.com/svn/trunk@504 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:27:14 +00:00
JesusFreke@JesusFreke.com
fda2e631ac
Refactor instructions to store individual pieces of data instead of just using an offset into a buffer
...
Also included is a partial implementation of the logic needed to automatically fix various types of issues
git-svn-id: https://smali.googlecode.com/svn/trunk@502 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:26:59 +00:00
JesusFreke@JesusFreke.com
9ab2b45ec8
whitespace fixes
...
git-svn-id: https://smali.googlecode.com/svn/trunk@501 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:26:13 +00:00
JesusFreke@JesusFreke.com
5867263eb5
line ending and trailing whitespace cleanup
...
git-svn-id: https://smali.googlecode.com/svn/trunk@500 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-23 05:25:59 +00:00
JesusFreke@JesusFreke.com
b6ce091ae3
fix an issue reading the string index for indexes >16bits, for the const-string/jumbo opcode
...
git-svn-id: https://smali.googlecode.com/svn/trunk@495 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-12-09 09:56:13 +00:00
JesusFreke@JesusFreke.com
b09920f24f
Use the shorter form of decodeUnsignedShort
...
git-svn-id: https://smali.googlecode.com/svn/trunk@479 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-19 03:34:03 +00:00
JesusFreke@JesusFreke.com
29f49465ca
Use a SparseArray instead of a HashMap, and add get*Count methods to AnnotationDirectoryItem so we can initialize the SparseArrays with the correct capacity
...
git-svn-id: https://smali.googlecode.com/svn/trunk@478 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-19 03:18:35 +00:00
JesusFreke@JesusFreke.com
cd5d4c0385
Use proper hygiene. Close those files/streams!
...
git-svn-id: https://smali.googlecode.com/svn/trunk@477 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-14 02:37:26 +00:00
JesusFreke@JesusFreke.com
c8d83493d1
Add support for reading a classes.dex file from an apk/jar
...
git-svn-id: https://smali.googlecode.com/svn/trunk@470 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-09-13 21:55:24 +00:00