DEX形式解析ツール、特定の関数の暗号化

1640 ワード

1.leb 128符号化解析

    public static byte[] readUnsignedLeb128(byte[] srcByte, int offset){
        List byteAryList = new ArrayList();
        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

具体的な解析は以下のとおりです.http://blog.csdn.net/liwugang43210/article/details/50475928
leb 128符号化は、7ビットの数字をとることです.1番目は、取得を続行するかどうかのIDです.
以下、10000を例として、符号化プロセス:バイナリ形式10,0111,0001,000 7 bitsを全体として1001110,001,000に識別を追加して新しいバイト(後から先、すなわち低bitsから高bits)01001110(0 x 4 E)10010000(0 x 90)(最上位識別が0に設定され、後続バイトがないことを示す)LEB 128は0 x 90 0 x 4 F(小端格納)である
復号処理:LEB 1280 x 90 x 4 Eバイナリ形式10010000 01001110識別情報00100000(低7 bits)1001110(高7 bits)の組合せを除去した結果、10011100010000(10000)

2.特定関数の暗号化


参照:http://www.wjdiankong.cn/archives/553DEXファイルの分析を説明していますが、間違いがあります.

3.dexコード照合


http://www.netmite.com/android/mydroid/dalvik/docs/dalvik-bytecode.html
https://source.android.com/devices/tech/dalvik/dalvik-bytecodeDalvikバイトコードhttps://source.android.com/devices/tech/dalvik/instruction-formatsDalvik実行可能命令フォーマット