Exemple #1
0
def run_data_file(data_file):
    emu = Emulator()
    ret = emu.run(data_file)
    outx = emu.vm.variables.copy()
    outx.update({'ret': ret})
    return str(OrderedDict(sorted(outx.items()))).replace(
        'OrderedDict([(',
        '{').replace(')])', '}').replace("',", "':").replace("), (", ', ')
Exemple #2
0
# Arguments for the method.
# args = {
#     'p0': (-62, -99, -106, -125, -123, -105, -98, -37, -105, -97, -103, -41, -118, -97, -113, -103, -109, -104, -115, 111, 98, 103, 35, 52),
#     'p1': 19
# }

# ret = emu.run(filename, args)
# print(emu.stats)
# print("RESULT: %s" % ret)
# print('-' * 100)

emu2 = Emulator()

filename = os.path.join(os.path.dirname(__file__), 'test.smali')
ret = emu2.run(filename, trace=True)
print(ret)
print(emu2.vm.variables)
exit()

snippet = [
    'const/16 v5, 0x29', 'new-array v0, v5, [B',
    'fill-array-data v0, :array_66', 'sput-object v0, xbd:[B',
    'const/16 v0, 0xde', 'sput v0, xba:I',
    'new-instance v0, Ljava/lang/StringBuilder;', 'sget-object v1, xbd:[B',
    'const/4 v2, 0x6', 'aget-byte v1, v1, v2', 'int-to-byte v1, v1',
    'or-int/lit8 v2, v1, 0x50', 'int-to-byte v2, v2', 'sget-object v3, xbd:[B',
    'const/16 v4, 0x13', 'aget-byte v3, v3, v4', 'int-to-byte v3, v3',
    'return-object v0', ':array_66', '   .array-data 1', '       0x79t',
    '       -0x52t', '       0x16t', '       0x47t', '       0xet',
    '       0x2t', '       0x5t', '       0xct', '       0x7t', '       0x8t',
Exemple #3
0
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

from smaliemu.emulator import Emulator

emu = Emulator()

filename = os.path.join(os.path.dirname(__file__), 'decryptor.smali')

# Arguments for the method.
args = {
    'p0': (-62, -99, -106, -125, -123, -105, -98, -37, -105, -97, -103, -41,
           -118, -97, -113, -103, -109, -104, -115, 111, 98, 103, 35, 52),
    'p1':
    19
}

ret = emu.run(filename, args)
print(emu.stats)
print("RESULT: %s" % ret)
print('-' * 100)

emu2 = Emulator()

snippet = ['const/16 a, 5', 'mul-int/lit16 c,a,5']

ret = emu2.call(snippet, trace=True)
print("{'a': 5, 'c': 25, 'ret': None}")
print("'%s'" % ret)