美文网首页
DEX 格式分析工具,加密特定函数

DEX 格式分析工具,加密特定函数

作者: that_is_this | 来源:发表于2018-03-22 12:29 被阅读113次

1. leb128 编码解析

    public static byte[] readUnsignedLeb128(byte[] srcByte, int offset){
        List<Byte> byteAryList = new ArrayList<Byte>();
        byte bytes = Utils.copyByte(srcByte, offset, 1)[0];
        byte highBit = (byte)(bytes & 0x80);
        byteAryList.add(bytes);
        offset ++;
        while(highBit != 0){
            bytes = Utils.copyByte(srcByte, offset, 1)[0];
            highBit = (byte)(bytes & 0x80);
            offset ++;
            byteAryList.add(bytes);
        }
        byte[] byteAry = new byte[byteAryList.size()];
        for(int j=0;j<byteAryList.size();j++){
            byteAry[j] = byteAryList.get(j);
        }
        return byteAry;
    }

    /**
     * 解码leb128数据
     * 每个字节去除最高位,然后进行拼接,重新构造一个int类型数值,从低位开始
     * @param byteAry
     * @return
     */
    public static int decodeUleb128(byte[] byteAry) {
        int result = 0;
        int a =0;
        int offset = 0;

        while (byteAry[a] != 0) {
            result |= ((byteAry[a] & 0x7f) << offset);
            offset += 7;
            if ((byteAry[a] & 0x80) == 0) break;
            a += 1;
        }
        return result;
    }

具体解析可参考:http://blog.csdn.net/liwugang43210/article/details/50475928

leb128 编码,就是取 7 位数字。第一位为是否继续取的标识

下面以10000为例,编码过程:
二进制形式为 10 0111 0001 0000
以7bits为整体 1001110 0010000
添加标识组合成新的字节(从后往前,即低bits到高bits) 01001110(0x4E) 10010000(0x90) (最高位标识设置为0,表示没有后续字节)
LEB128 则为 0x90 0x4F (小端存放)

解码过程:
LEB128 0x90 0x4E
二进制形式 10010000 01001110
去掉标识信息 0010000(低7bits) 1001110(高7bits)
组合的结果为 10011100010000 (10000)

2. 加密特定函数

可参考:http://www.wjdiankong.cn/archives/553
里面讲解了对 DEX 文件的分析,但有错误的地方

3. dex code 编码对照

http://www.netmite.com/android/mydroid/dalvik/docs/dalvik-bytecode.html

https://source.android.com/devices/tech/dalvik/dalvik-bytecode Dalvik 字节码
https://source.android.com/devices/tech/dalvik/instruction-formats Dalvik 可执行指令格式

相关文章

网友评论

      本文标题:DEX 格式分析工具,加密特定函数

      本文链接:https://www.haomeiwen.com/subject/lmcaqftx.html