Android上的Dalvik字节码混淆

2024-09-27 18:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近读了这篇文章Dalvik Bytecode Obfuscation on Android

我还下载了源代码在https://github.com/thuxnder/dalvik-obfuscator/blob/master/injector.py

我知道该技术的作用是迭代所有方法,在代码块中插入junkbytes,并在代码块前面进行无条件的分支(以确保代码块永远不会被执行)。在

但是我不熟悉Python脚本,所以在理解第204行到第212行的代码块时遇到了困难,这导致了异常:

def _obfuscator_arrayDataOverlayIf(self, method):
    obfuscator = array.array('c', "\x32\x00\x09\x00\x26\x00\x03\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00")
    size = method.getMethodSize()
    if size == 0:
        print "skip method @ 0x%x" % method._offset
        return 
    payloadlen = size-len(obfuscator)
    struct.pack_into('I', obfuscator, 14, payloadlen)
    return method.obfuscate(obfuscator)

如果有人能向我解释这段代码的作用,我将不胜感激,这样我就能领会作者的想法。在

编辑:回溯如下:

^{pr2}$

Tags: 代码sizereturnonarraymethodandroiddalvik
1条回答
网友
1楼 · 发布于 2024-09-27 18:17:12
struct.pack_into('I', obfuscator, 14, payloadlen)

这行将payloadlen写入char数组obfuscator中偏移量14处的无符号int。例如,如果值为负,则超出范围。如果允许负值,请将'I'更改为'i'表示有符号int

另请参见^{} module documentation

相关问题 更多 >

    热门问题