You are on page 1of 3

===================================================================================

==================

IGLogger
Class to help with adding logging function in smali output from 3rd party
Android apps.
Written in Java by b3nn, compiled and converted to smali 2.x by cobalt
(www.crackberry.com)

Usage:
Inject IGLogger into your smali code by enabling the checkbox in GMAPS Patcher

Simply add a line of Smali where you want to log out. The easiest case is
simple to add:
invoke-static {}, Liglogger;->d()I

Alternatively, you can log variables, but you do need to ensure you get the
types correct.
Example, if v1 is already a string, use:
invoke-static {v1}, Liglogger;->d(Ljava/lang/String;)I

Use Blackberry Logger to view the logs of the Blackberry Android Runtime
http://forums.crackberry.com/bb10-tips-how-faq-f295/how-pull-android-logs-your-
blackberry-893522/

===================================================================================
==================

DEFAULT Case
Use this call to just print you where here in a method

*** SMALI CODE TO ADD ***


invoke-static {}, Liglogger;->d()I

SPECIAL Case: stacktrace


Use this print a stack trace to the log when you hit this code, but no
error is thrown. Useful in obfuscated classes where its hard to tell what
called into your current method.

*** SMALI CODE TO ADD ***


invoke-static {}, Liglogger;->stacktrace()I

STRING Case
Smali Type Value: 0x17

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(Ljava/lang/String;)I

BOOLEAN Case
Smali Type Value: 0x1f
*** SMALI CODE TO ADD ***
invoke-static {v0}, Liglogger;->d(Ljava/lang/Boolean;)I

CHAR Case
Smali Type Value: 0x17

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(C)I

INT Case
Smali Type Value: 0x04

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(I)I

LONG Case
Smali Type Value: 0x06

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(J)I

FLOAT Case
Smali Type Value: 0x10

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(F)I

DOUBLE Case
Smali Type Value: 0x11

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(D)I

STRING ARRAY Case


Smali Type Value: 0x1c

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d([Ljava/lang/String;)I

COLLECTION OF STRINGS Case


Smali Type Value: 0x1d

Hint, look at the ".signature" of the method in your decompiled application to


see if your collection is a type <String>.
*** SMALI CODE TO ADD ***
invoke-static {v0}, Liglogger;->d(Ljava/util/Collection;)I

OBJECT Case

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d(Ljava/lang/Object;)I

BYTE ARRAY Case


will print the byte array as a hex string

*** SMALI CODE TO ADD ***


invoke-static {v0}, Liglogger;->d([B)I

URL Case
*** SMALI CODE TO ADD ***
invoke-static {v0}, Liglogger;->d(Ljava/net/URL;)I

URLConnection Case
*** SMALI CODE TO ADD ***
invoke-static {v0}, Liglogger;->d(Ljava/net/HttpURLConnection;)I

===================================================================================
==================

Tips for Errors


If you get a validation error such as:
W/dalvikvm(12928): VFY: register1 v1 type 17, wanted ref

This means you got the type of "v1" wrong and it is of type "17". The look up
for these types is listed at the URL below.
http://source.android.com/tech/dalvik/dex-format.html

("Value Formats" table)

You might also like