예제 #1
0
파일: test_cfg.py 프로젝트: zbx911/deobf
    def test_cfg_libc_pthread_create(self):
        cbs = [
            CodeBlock(0x0000D218, 0x0000D268),
            CodeBlock(0x0000D268, 0x0000D274),
            CodeBlock(0x0000D274, 0x0000D28C),
            CodeBlock(0x0000D28C, 0x0000D2C8),
            CodeBlock(0x0000D2C8, 0x0000D2D4),
            CodeBlock(0x0000D2D4, 0x0000D314),
            CodeBlock(0x0000D314, 0x0000D32C),
            CodeBlock(0x0000D32C, 0x0000D348),
            CodeBlock(0x0000D348, 0x0000D350),
            CodeBlock(0x0000D350, 0x0000D364),
            CodeBlock(0x0000D364, 0x0000D378),
            CodeBlock(0x0000D378, 0x0000D3AC),
            CodeBlock(0x0000D3AC, 0x0000D3D8),
            CodeBlock(0x0000D3D8, 0x0000D3E8),
            CodeBlock(0x0000D3E8, 0x0000D408),
            CodeBlock(0x0000D408, 0x0000D414),
            CodeBlock(0x0000D414, 0x0000D454),
            CodeBlock(0x0000D454, 0x0000D468),
            CodeBlock(0x0000D468, 0x0000D47C),
            CodeBlock(0x0000D47C, 0x0000D484),
            CodeBlock(0x0000D484, 0x0000D4B4),
            CodeBlock(0x0000D4B4, 0x0000D4C8),
            CodeBlock(0x0000D4C8, 0x0000D4D8),
            CodeBlock(0x0000D4D8, 0x0000D518)
        ]

        with open("tests/bin/libc.so", "rb") as f:
            blocks = cfg.create_cfg(f, 0x0000D218, 768, False)
            #print(blocks[9])
            #print(blocks[9].parent)
            #print(blocks[9].childs)
            #print(blocks)
            self.assertEqual(len(cbs), len(blocks))
            for i in range(0, len(cbs)):
                self.hex_addr_assert(cbs[i].start, blocks[i].start)
                self.hex_addr_assert(cbs[i].end, blocks[i].end)
            #
            b = blocks[9]
            self.hex_addr_assert(b.start, 0x0000D350)
            self.hex_addr_assert(b.end, 0x0000D364)
            self.assertEqual(len(b.parent), 3)
            self.assertEqual(len(b.childs), 0)
예제 #2
0
    out_path = sys.argv[2]
    trace_path = sys.argv[3]
    base_addr = int(sys.argv[4], 16)
    end_addr = int(sys.argv[5], 16)
    is_thumb = sys.argv[6] != "0"
    of_type = "common"
    if (len(sys.argv) > 7):
        of_type = sys.argv[7]
    #
    detector = _of_maps[of_type]

    lib_name = os.path.basename(path)

    shutil.copyfile(path, out_path)
    with open(path, "rb") as f:
        blocks = cfg.create_cfg(f, base_addr, end_addr - base_addr, is_thumb)
        #print (blocks)
        ins_mgr = IntructionManger(is_thumb)

        of_b, dead_cb = detector.find_ofuse_control_block(
            f, blocks, base_addr, ins_mgr)

        #print("cbs:%r"%of_b)
        #print ("dead_cb:%r"%dead_cb)

        logic_blocks = list(blocks)

        list_remove(logic_blocks, of_b)
        list_remove(logic_blocks, dead_cb)

        #print("lbs:%r"%logic_blocks)
예제 #3
0
파일: test_cfg.py 프로젝트: zbx911/deobf
    def test_cfg_bangbang_tbb_tbh(self):
        cbs = [
            CodeBlock(0x0001B180, 0x0001B1C4),
            CodeBlock(0x0001B1C4, 0x0001B1CA),
            CodeBlock(0x0001B1CA, 0x0001B1CE),
            CodeBlock(0x0001B1CE, 0x0001B1D2),
            CodeBlock(0x0001B1E0, 0x0001B1E2),
            CodeBlock(0x0001B1E2, 0x0001B1EC),
            CodeBlock(0x0001B1EC, 0x0001B1F4),
            CodeBlock(0x0001B1F4, 0x0001B1FC),
            CodeBlock(0x0001B1FC, 0x0001B204),
            CodeBlock(0x0001B204, 0x0001B208),
            CodeBlock(0x0001B208, 0x0001B248),
            CodeBlock(0x0001B248, 0x0001B27E),
            CodeBlock(0x0001B27E, 0x0001B2A8),
            CodeBlock(0x0001B2A8, 0x0001B2AC),
            CodeBlock(0x0001B2AC, 0x0001B2B2),
            CodeBlock(0x0001B2B2, 0x0001B2B6),
            CodeBlock(0x0001B2B6, 0x0001B2BA),
            CodeBlock(0x0001B2CC, 0x0001B37A),
            CodeBlock(0x0001B37A, 0x0001B382),
            CodeBlock(0x0001B382, 0x0001B38A),
            CodeBlock(0x0001B38A, 0x0001B392),
            CodeBlock(0x0001B392, 0x0001B39A),
            CodeBlock(0x0001B39A, 0x0001B39E),
            CodeBlock(0x0001B39E, 0x0001B3BC),
            CodeBlock(0x0001B3BC, 0x0001B3DC),
            CodeBlock(0x0001B3DC, 0x0001B3E8),
            CodeBlock(0x0001B3E8, 0x0001B3FC),
            CodeBlock(0x0001B3FC, 0x0001B400),
            CodeBlock(0x0001B400, 0x0001B402),
            CodeBlock(0x0001B406, 0x0001B410),
            CodeBlock(0x0001B410, 0x0001B414),
            CodeBlock(0x0001B414, 0x0001B41A),
            CodeBlock(0x0001B41A, 0x0001B430),
            CodeBlock(0x0001B430, 0x0001B438),
            CodeBlock(0x0001B438, 0x0001B43A),
            CodeBlock(0x0001B43A, 0x0001B442),
            CodeBlock(0x0001B442, 0x0001B446),
            CodeBlock(0x0001B446, 0x0001B448),
            CodeBlock(0x0001B448, 0x0001B44C),
            CodeBlock(0x0001B44C, 0x0001B450),
            CodeBlock(0x0001B450, 0x0001B46A),
            CodeBlock(0x0001B46A, 0x0001B472),
            CodeBlock(0x0001B472, 0x0001B47C),
            CodeBlock(0x0001B47C, 0x0001B47E),
            CodeBlock(0x0001B47E, 0x0001B486),
            CodeBlock(0x0001B486, 0x0001B49A),
            CodeBlock(0x0001B49A, 0x0001B49E),
            CodeBlock(0x0001B49E, 0x0001B4A0),
            CodeBlock(0x0001B4A4, 0x0001B4A8),
            CodeBlock(0x0001B4A8, 0x0001B4B8),
            CodeBlock(0x0001B4B8, 0x0001B4BA),
            CodeBlock(0x0001B4BA, 0x0001B4BE),
            CodeBlock(0x0001B4BE, 0x0001B4C4),
            CodeBlock(0x0001B4C4, 0x0001B4D4),
            CodeBlock(0x0001B4D4, 0x0001B4D6),
            CodeBlock(0x0001B4D6, 0x0001B4E4),
            CodeBlock(0x0001B4FC, 0x0001B500),
            CodeBlock(0x0001B500, 0x0001B502),
            CodeBlock(0x0001B502, 0x0001B506),
            CodeBlock(0x0001B506, 0x0001B514),
            CodeBlock(0x0001B54C, 0x0001B638),
            CodeBlock(0x0001B638, 0x0001B64A),
            CodeBlock(0x0001B64A, 0x0001B65C),
            CodeBlock(0x0001B65C, 0x0001B66C),
            CodeBlock(0x0001B66C, 0x0001B7E4),
            CodeBlock(0x0001B7E4, 0x0001B93E),
            CodeBlock(0x0001B93E, 0x0001B940),
            CodeBlock(0x0001B960, 0x0001BA0E),
            CodeBlock(0x0001BA0E, 0x0001BA96),
            CodeBlock(0x0001BA96, 0x0001BDB4),
            CodeBlock(0x0001BDB4, 0x0001BDCA),
            CodeBlock(0x0001BDCA, 0x0001BDDA),
            CodeBlock(0x0001BDDA, 0x0001BDE8),
            CodeBlock(0x0001BDE8, 0x0001BDEE),
            CodeBlock(0x0001BDEE, 0x0001BF26),
            CodeBlock(0x0001BF30, 0x0001CC78),
            CodeBlock(0x0001CC78, 0x0001CD5E),
            CodeBlock(0x0001CD5E, 0x0001CDCC),
            CodeBlock(0x0001CDCC, 0x0001CDCE),
            CodeBlock(0x0001CDE4, 0x0001CDEA),
            CodeBlock(0x0001CDEA, 0x0001CDEC),
            CodeBlock(0x0001CDEC, 0x0001CE76),
            CodeBlock(0x0001CE76, 0x0001CE86),
            CodeBlock(0x0001CE86, 0x0001CED0),
            CodeBlock(0x0001CED0, 0x0001CEDA),
            CodeBlock(0x0001CEDA, 0x0001D022),
            CodeBlock(0x0001D022, 0x0001D024),
            CodeBlock(0x0001D024, 0x0001D058),
            CodeBlock(0x0001D058, 0x0001D05E),
            CodeBlock(0x0001D05E, 0x0001D08C),
            CodeBlock(0x0001D08C, 0x0001D090),
            CodeBlock(0x0001D090, 0x0001D094),
            CodeBlock(0x0001D094, 0x0001D098),
            CodeBlock(0x0001D0A4, 0x0001D0B2),
            CodeBlock(0x0001D0B2, 0x0001D0D0),
            CodeBlock(0x0001D0D0, 0x0001D0F0),
            CodeBlock(0x0001D0F0, 0x0001D108),
            CodeBlock(0x0001D108, 0x0001D114),
            CodeBlock(0x0001D114, 0x0001D116),
            CodeBlock(0x0001D116, 0x0001D126),
            CodeBlock(0x0001D126, 0x0001D136),
            CodeBlock(0x0001D136, 0x0001D150),
            CodeBlock(0x0001D150, 0x0001D156),
            CodeBlock(0x0001D156, 0x0001D162),
            CodeBlock(0x0001D162, 0x0001D164),
            CodeBlock(0x0001D164, 0x0001D168),
            CodeBlock(0x0001D168, 0x0001D16E),
            CodeBlock(0x0001D16E, 0x0001D172),
            CodeBlock(0x0001D172, 0x0001D178),
            CodeBlock(0x0001D178, 0x0001D17C),
            CodeBlock(0x0001D17C, 0x0001D186),
            CodeBlock(0x0001D186, 0x0001D18A),
            CodeBlock(0x0001D18A, 0x0001D194),
            CodeBlock(0x0001D194, 0x0001D198),
            CodeBlock(0x0001D198, 0x0001D19A),
            CodeBlock(0x0001D19A, 0x0001D1A0),
            CodeBlock(0x0001D1A0, 0x0001D1FC),
            CodeBlock(0x0001D1FC, 0x0001D20A),
            CodeBlock(0x0001D20A, 0x0001D21C),
            CodeBlock(0x0001D21C, 0x0001D22C),
            CodeBlock(0x0001D22C, 0x0001D244),
            CodeBlock(0x0001D244, 0x0001D246),
            CodeBlock(0x0001D246, 0x0001D24C),
            CodeBlock(0x0001D24C, 0x0001D260),
            CodeBlock(0x0001D260, 0x0001D276),
            CodeBlock(0x0001D276, 0x0001D288),
            CodeBlock(0x0001D288, 0x0001D28C),
            CodeBlock(0x0001D28C, 0x0001D296),
            CodeBlock(0x0001D296, 0x0001D356),
            CodeBlock(0x0001D356, 0x0001D360),
            CodeBlock(0x0001D360, 0x0001D364),
            CodeBlock(0x0001D364, 0x0001D376),
            CodeBlock(0x0001D376, 0x0001D380),
            CodeBlock(0x0001D380, 0x0001D38C),
            CodeBlock(0x0001D38C, 0x0001D3A0),
            CodeBlock(0x0001D3A0, 0x0001D3A4),
            CodeBlock(0x0001D3A4, 0x0001D3A6),
            CodeBlock(0x0001D3A8, 0x0001D3B8),
            CodeBlock(0x0001D3B8, 0x0001D3CE),
            CodeBlock(0x0001D3CE, 0x0001D3D4),
            CodeBlock(0x0001D3D4, 0x0001D3D8),
            CodeBlock(0x0001D3D8, 0x0001D3DC),
            CodeBlock(0x0001D406, 0x0001D418),
            CodeBlock(0x0001D418, 0x0001D446),
            CodeBlock(0x0001D446, 0x0001D460),
            CodeBlock(0x0001D460, 0x0001D490),
            CodeBlock(0x0001D490, 0x0001D494),
            CodeBlock(0x0001D508, 0x0001D522),
            CodeBlock(0x0001D522, 0x0001D526),
            CodeBlock(0x0001D526, 0x0001D564),
            CodeBlock(0x0001D564, 0x0001D578),
            CodeBlock(0x0001D578, 0x0001D582),
            CodeBlock(0x0001D582, 0x0001D59A),
            CodeBlock(0x0001D59A, 0x0001D5A0),
            CodeBlock(0x0001D5A0, 0x0001D5E0),
            CodeBlock(0x0001D5E0, 0x0001D5E2),
            CodeBlock(0x0001D5E2, 0x0001D5E6),
            CodeBlock(0x0001D5E6, 0x0001D5EA),
            CodeBlock(0x0001D5EA, 0x0001D5EE),
            CodeBlock(0x0001D5F6, 0x0001D5FE),
            CodeBlock(0x0001D5FE, 0x0001D60A),
            CodeBlock(0x0001D60A, 0x0001D618),
            CodeBlock(0x0001D618, 0x0001D63A),
            CodeBlock(0x0001D63A, 0x0001D646),
            CodeBlock(0x0001D646, 0x0001D64A),
            CodeBlock(0x0001D64A, 0x0001D64E),
            CodeBlock(0x0001D64E, 0x0001D65C),
            CodeBlock(0x0001D65C, 0x0001D66A),
            CodeBlock(0x0001D66A, 0x0001D66E),
            CodeBlock(0x0001D66E, 0x0001D672),
            CodeBlock(0x0001D672, 0x0001D674),
            CodeBlock(0x0001D674, 0x0001D678),
            CodeBlock(0x0001D678, 0x0001D694),
            CodeBlock(0x0001D694, 0x0001D6A0),
            CodeBlock(0x0001D6A0, 0x0001D6A2),
            CodeBlock(0x0001D6A2, 0x0001D6A6),
            CodeBlock(0x0001D6A6, 0x0001D6AA),
            CodeBlock(0x0001D6AA, 0x0001D6B0),
            CodeBlock(0x0001D6B0, 0x0001D6B8),
            CodeBlock(0x0001D6B8, 0x0001D6BA),
            CodeBlock(0x0001D6BA, 0x0001D6BE),
            CodeBlock(0x0001D6BE, 0x0001D6FE),
            CodeBlock(0x0001D6FE, 0x0001D702),
            CodeBlock(0x0001D702, 0x0001D708),
            CodeBlock(0x0001D708, 0x0001D734),
            CodeBlock(0x0001D734, 0x0001D74A),
            CodeBlock(0x0001D74A, 0x0001D756),
            CodeBlock(0x0001D756, 0x0001D76A),
            CodeBlock(0x0001D76A, 0x0001D776),
            CodeBlock(0x0001D776, 0x0001D77A),
            CodeBlock(0x0001D77A, 0x0001D784),
            CodeBlock(0x0001D784, 0x0001D794),
            CodeBlock(0x0001D794, 0x0001D7BE),
            CodeBlock(0x0001D7BE, 0x0001D7CC),
            CodeBlock(0x0001D7CC, 0x0001D7EC),
            CodeBlock(0x0001D7EC, 0x0001D80A),
            CodeBlock(0x0001D80A, 0x0001D80C),
            CodeBlock(0x0001D80C, 0x0001D93E),
            CodeBlock(0x0001D93E, 0x0001D944),
            CodeBlock(0x0001D944, 0x0001D948),
            CodeBlock(0x0001D948, 0x0001D94C),
            CodeBlock(0x0001D96C, 0x0001D980),
            CodeBlock(0x0001D980, 0x0001D99E),
            CodeBlock(0x0001D99E, 0x0001D9A6),
            CodeBlock(0x0001D9A6, 0x0001D9C0),
            CodeBlock(0x0001D9C0, 0x0001D9C6),
            CodeBlock(0x0001D9C6, 0x0001D9CC),
            CodeBlock(0x0001D9CC, 0x0001D9D4),
            CodeBlock(0x0001D9D4, 0x0001D9FA),
            CodeBlock(0x0001D9FA, 0x0001DA5C),
            CodeBlock(0x0001DA5C, 0x0001DA66),
            CodeBlock(0x0001DA66, 0x0001DA6E),
            CodeBlock(0x0001DA6E, 0x0001DA76),
            CodeBlock(0x0001DA76, 0x0001DA7E),
            CodeBlock(0x0001DA7E, 0x0001DA82),
            CodeBlock(0x0001DA82, 0x0001DAA6),
            CodeBlock(0x0001DAA6, 0x0001DABA),
            CodeBlock(0x0001DABA, 0x0001DAFE),
            CodeBlock(0x0001DAFE, 0x0001DB04),
            CodeBlock(0x0001DB04, 0x0001DB08),
            CodeBlock(0x0001DB08, 0x0001DB0C),
            CodeBlock(0x0001DB16, 0x0001DB2E),
            CodeBlock(0x0001DB2E, 0x0001DB34),
            CodeBlock(0x0001DB34, 0x0001DB3A),
            CodeBlock(0x0001DB3A, 0x0001DB66),
            CodeBlock(0x0001DB66, 0x0001DB6E),
            CodeBlock(0x0001DB6E, 0x0001DB8E),
            CodeBlock(0x0001DB8E, 0x0001DB9C),
            CodeBlock(0x0001DB9C, 0x0001DB9E),
            CodeBlock(0x0001DB9E, 0x0001DBA2),
            CodeBlock(0x0001DBA2, 0x0001DBAC),
            CodeBlock(0x0001DBAC, 0x0001DBCA),
            CodeBlock(0x0001DBCA, 0x0001DC00),
            CodeBlock(0x0001DC00, 0x0001DC06),
            CodeBlock(0x0001DC06, 0x0001DC0A),
            CodeBlock(0x0001DC0A, 0x0001DC0E),
            CodeBlock(0x0001DC0E, 0x0001DC10),
            CodeBlock(0x0001DC10, 0x0001DC14),
            CodeBlock(0x0001DC14, 0x0001DC2C),
            CodeBlock(0x0001DC2C, 0x0001DC30),
            CodeBlock(0x0001DC30, 0x0001DC36),
            CodeBlock(0x0001DC36, 0x0001DC3C),
            CodeBlock(0x0001DC3C, 0x0001DC50),
            CodeBlock(0x0001DC50, 0x0001DC64),
            CodeBlock(0x0001DC64, 0x0001DC94),
            CodeBlock(0x0001DC94, 0x0001DCA6),
            CodeBlock(0x0001DCA6, 0x0001DCC4),
            CodeBlock(0x0001DCC4, 0x0001DCDC),
            CodeBlock(0x0001DCDC, 0x0001DCE2),
            CodeBlock(0x0001DCE2, 0x0001DCE6),
            CodeBlock(0x0001DCE6, 0x0001DCEE),
            CodeBlock(0x0001DCEE, 0x0001DCF0),
            CodeBlock(0x0001DCF0, 0x0001DCF4),
            CodeBlock(0x0001DCF4, 0x0001DCFE),
            CodeBlock(0x0001DCFE, 0x0001DD02),
            CodeBlock(0x0001DD02, 0x0001DD0A),
            CodeBlock(0x0001DD0A, 0x0001DD0E),
            CodeBlock(0x0001DD0E, 0x0001DD1C),
            CodeBlock(0x0001DD1C, 0x0001DD20),
            CodeBlock(0x0001DD20, 0x0001DD26),
            CodeBlock(0x0001DD26, 0x0001DD60),
            CodeBlock(0x0001DD60, 0x0001DD7E),
            CodeBlock(0x0001DD7E, 0x0001DD86),
            CodeBlock(0x0001DD86, 0x0001DDB4),
            CodeBlock(0x0001DDB4, 0x0001DDEA),
            CodeBlock(0x0001DDEA, 0x0001DDF0),
            CodeBlock(0x0001DDF0, 0x0001DDF6),
            CodeBlock(0x0001DDF6, 0x0001DDFA),
            CodeBlock(0x0001DDFA, 0x0001DE82),
            CodeBlock(0x0001DE82, 0x0001DE8A),
            CodeBlock(0x0001DE8A, 0x0001DE8E),
            CodeBlock(0x0001DE94, 0x0001DEB8),
            CodeBlock(0x0001DEB8, 0x0001DEBC),
            CodeBlock(0x0001DEBC, 0x0001DECA),
            CodeBlock(0x0001DECA, 0x0001DF02),
            CodeBlock(0x0001DF02, 0x0001DF14),
            CodeBlock(0x0001DF14, 0x0001DF26),
            CodeBlock(0x0001DF26, 0x0001DF30),
            CodeBlock(0x0001DF30, 0x0001DF34),
            CodeBlock(0x0001DF34, 0x0001DF40),
            CodeBlock(0x0001DF40, 0x0001DF44),
            CodeBlock(0x0001DF44, 0x0001DF4C)
        ]

        with open("tests/bin/libSecShell.so", "rb") as f:
            blocks = cfg.create_cfg(f, 0x0001B180, 11724, True)
            self.assertEqual(len(cbs), len(blocks))
            for b in cbs:
                self.assertTrue(self.cb_in_cbs(b, blocks),
                                "expect block %r not in result" % b)