示例#1
0
def decode(ea):
    import ia32
    '''Disassemble instruction at specified address'''
    def bytegenerator(ea):
        while True:
            yield chr(idc.Byte(ea))
            ea += 1
    return ia32.consume(bytegenerator(ea))
示例#2
0
def decode(ea):
    import ia32
    '''Disassemble instruction at specified address'''
    def bytegenerator(ea):
        while True:
            yield chr(idc.Byte(ea))
            ea += 1

    return ia32.consume(bytegenerator(ea))
示例#3
0
    def lift(self, address, length):
        '''return the bytes required in order to lift to code at /address/ along a valid instruction boundary'''
        def producer(address, mm):
            while True:
                yield mm.read(address, 1)
                address += 1
            raise NotImplementedError("WTF")

        consumeable = producer(address, self.memorymanager)
        lifted = ""
        while length > 0:
            instruction = ''.join(ia32.consume(consumeable))
            lifted += instruction
            length -= len(instruction)
        return lifted
示例#4
0
    def lift(self, address, length):
        '''return the bytes required in order to lift to code at /address/ along a valid instruction boundary'''
        def producer(address, mm):
            while True:
                yield mm.read(address, 1)
                address += 1
            raise NotImplementedError("WTF")

        consumeable = producer(address, self.memorymanager)
        lifted = ""
        while length > 0:
            instruction = ''.join(ia32.consume(consumeable))
            lifted += instruction
            length -= len(instruction)
        return lifted
示例#5
0
    def Test_10():
        res = '''
        b8b5000000ba0003fe7fff12c20c00b8b6000000ba0003fe7fff12c21800b8b7000000ba0003fe7fff12c22400b8b8000000ba0003fe7fff12c22400b8b9000000ba0003fe7fff12c21800b8ba000000ba0003fe7fff12c21400b8bb000000ba0003fe7fff12c20400b8bc000000ba0003fe7fff12c20800b8bd000000ba0003fe7fff12c20c00b8be000000ba0003fe7fff12c21400
        6a1468082d917ce85cbcffff8a1dc0e1977c8b750c33d23bf20f85f81602008b7d103bfa740289178b4d08f7c1fcffffff0f851cbb02003bfa0f842dbb02008bc183e0020f85d416020084db754a33db4384cb0f84821d00006878e1977c3bc20f8597170200e832e3feff85f60f8536bb020064a118000000b9d8e0977cf00fc1194381e3ffff00008b402425ff0f0000c1e0100bd8891f33f68bc6e802bcffffc20c0090ffffffff43e8937c5ee8937c90909090906a0c68802d917ce8a6bbffff8b5508f7c2feffffff0f85b8bb02008b4d0c85c97436f7c1000000f00f85bebb020064a118000000c1e91033482466f7c1ff0f0f85a7bb0200f6c2010f84107a01006878e1977ce86fe3feff33c0e88ebbffffc208009090909090ffffffff23e9937c3ee9937c90909090908bff558bec8b45145333db3bc3568b75080f8c04b60200895e048bc8c1e1100bc88b
        6a186868d7917ce8c411ffff33db895de4895de0a0c0e1977c895ddc895dd8381dc4e0977c0f8599db0000895dfc3ac374528d45e050ff7508e8ce56ffff84c074118b45e06639583a0f85f0e6010080483604834dfcffe8220000008b45e4e8a711ffffc20400909090909090ffffffff000000004bbe937c9090909090395ddc751cc38d45d8505353e8d954ffff8945e43bc37cbdc745dc01000000eb93ff75d86a01e87555ffffebd88b85f0fdffff56ffb5e8fdffffc603006a016a00ff7004ffb5ecfdffffe8c0e6ffff8bf885ff0f8cae550200ff36e8b5eaffffff36ffb5ecfdffffe8ebe8ffff8bf885ff0f8d76f9ffffe9c85502008b4df88b4508
        ddd8d9eec3ddd8ddd8d9e8c3dbbd62ffffffdbad62fffffff68569ffffff407408c68570ffffff07c3c68570ffffff01dc05c80e987cc3d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3dbbd62ffffffdbad62fffffff68569ffffff407420d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570ffff
        ddd8ddd8d9e8c3dbbd62ffffffdbad62fffffff68569ffffff407408c68570ffffff07c3c68570ffffff01dc05c80e987cc3d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3dbbd62ffffffdbad62fffffff68569ffffff407420d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed75
        ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8
        ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8db2d8ae0977cc30ac90f8523ffffffc3d9ec
        c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8db2d8ae0977cc30ac90f8523ffffffc3d9eceb02d9edd9c90ac90f8510ffffffd9f1c3
        d9c0d9fcd8d99bdfe09e751ad9c0dc0dea0e987cd9c0d9fcded99bdfe09e740db801000000c3b800000000ebf8b802000000ebf15683ec748bf45683ec08dd1c2483ec08dd1c249bdd7608e8d988030083c414dd6608dd0683c4745e85c00f85dffdffffeb05e9d8fdffffc3cccccccccc558bec5756538b4d100bc974408b75088b7d0cb741b35ab6208d098a26468a07473ae074183ae772063ae3770202e63ac772063ac3770202c63ae0750749740debd9eb09b9ffffffff7202f7d98bc15b5e5fc9c38b442404538b4c240c56578b5004558b70088b780c8b298bdf33de23da33df03dd8b288d9c1d78a46ad7c1c3078bc603da33c223c38b690433c603fd0556b7c7e803f8c1c70c8bc203fb33c323c78b690833c203f505db70202403
        8bff558bec5151dd450856dc15f817957c33d233f6dfe0f6c4057a02d9e0b80000f07fdd5df8394514b90000f0ff753e3955107578dd45f8dc1de817957cdfe0f6c4410f8482000000dd45f8dc1de817957cdfe0f6c4058b45180f8b89000000dd05f80f987c33f646e9ef000000394d14753a3955107535dd45f8dc1de817957cdfe0f6c4417507d9eee9cb000000dd45f8dc1de817957cdfe0f6c4058b45187abedd05f00f987ce9b000000039450c753f3955080f85a4000000dd4510dc1df817957cdfe0f6c441750bdd05f00f987ce984000000dd4510dc1df817957cdf
        '''.strip().split('\n')

        source = iter(res[0].decode('hex'))

        import ia32
        print repr(ia32.consume(source))
        raise NotImplementedError
示例#6
0
    def Test_10():
        res = '''
        b8b5000000ba0003fe7fff12c20c00b8b6000000ba0003fe7fff12c21800b8b7000000ba0003fe7fff12c22400b8b8000000ba0003fe7fff12c22400b8b9000000ba0003fe7fff12c21800b8ba000000ba0003fe7fff12c21400b8bb000000ba0003fe7fff12c20400b8bc000000ba0003fe7fff12c20800b8bd000000ba0003fe7fff12c20c00b8be000000ba0003fe7fff12c21400
        6a1468082d917ce85cbcffff8a1dc0e1977c8b750c33d23bf20f85f81602008b7d103bfa740289178b4d08f7c1fcffffff0f851cbb02003bfa0f842dbb02008bc183e0020f85d416020084db754a33db4384cb0f84821d00006878e1977c3bc20f8597170200e832e3feff85f60f8536bb020064a118000000b9d8e0977cf00fc1194381e3ffff00008b402425ff0f0000c1e0100bd8891f33f68bc6e802bcffffc20c0090ffffffff43e8937c5ee8937c90909090906a0c68802d917ce8a6bbffff8b5508f7c2feffffff0f85b8bb02008b4d0c85c97436f7c1000000f00f85bebb020064a118000000c1e91033482466f7c1ff0f0f85a7bb0200f6c2010f84107a01006878e1977ce86fe3feff33c0e88ebbffffc208009090909090ffffffff23e9937c3ee9937c90909090908bff558bec8b45145333db3bc3568b75080f8c04b60200895e048bc8c1e1100bc88b
        6a186868d7917ce8c411ffff33db895de4895de0a0c0e1977c895ddc895dd8381dc4e0977c0f8599db0000895dfc3ac374528d45e050ff7508e8ce56ffff84c074118b45e06639583a0f85f0e6010080483604834dfcffe8220000008b45e4e8a711ffffc20400909090909090ffffffff000000004bbe937c9090909090395ddc751cc38d45d8505353e8d954ffff8945e43bc37cbdc745dc01000000eb93ff75d86a01e87555ffffebd88b85f0fdffff56ffb5e8fdffffc603006a016a00ff7004ffb5ecfdffffe8c0e6ffff8bf885ff0f8cae550200ff36e8b5eaffffff36ffb5ecfdffffe8ebe8ffff8bf885ff0f8d76f9ffffe9c85502008b4df88b4508
        ddd8d9eec3ddd8ddd8d9e8c3dbbd62ffffffdbad62fffffff68569ffffff407408c68570ffffff07c3c68570ffffff01dc05c80e987cc3d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3dbbd62ffffffdbad62fffffff68569ffffff407420d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570ffff
        ddd8ddd8d9e8c3dbbd62ffffffdbad62fffffff68569ffffff407408c68570ffffff07c3c68570ffffff01dc05c80e987cc3d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3dbbd62ffffffdbad62fffffff68569ffffff407420d9c9dbbd62ffffffdbad62fffffff68569ffffff407409c68570ffffff07eb07c68570ffffff01dec1c3ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed75
        ddd8ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8
        ddd8db2d68e0977c80bd70ffffff007f07c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8db2d8ae0977cc30ac90f8523ffffffc3d9ec
        c68570ffffff010ac9c30ac97402d9e0c390ccccccccccccc68570fffffffe0aed753fd9c9d9f1eb0dc68570fffffffe32edd9eadec9e83f010000d9e8dec1f68561ffffff017404d9e8def1f6c2407502d9fd0aed0f84e4feffffd9e0e9ddfeffffe8560100000bc0748232ed83f8027402f6d5d9c9d9e1ebabe9d3feffffe969ffffffddd8ddd8db2d80e0977cc68570ffffff02c3d9edd9c9d9e49bddbd60ffffff9bf68561ffffff410f853cffffffd9f1c3c68570ffffff02ddd8db2d8ae0977cc30ac90f8523ffffffc3d9eceb02d9edd9c90ac90f8510ffffffd9f1c3
        d9c0d9fcd8d99bdfe09e751ad9c0dc0dea0e987cd9c0d9fcded99bdfe09e740db801000000c3b800000000ebf8b802000000ebf15683ec748bf45683ec08dd1c2483ec08dd1c249bdd7608e8d988030083c414dd6608dd0683c4745e85c00f85dffdffffeb05e9d8fdffffc3cccccccccc558bec5756538b4d100bc974408b75088b7d0cb741b35ab6208d098a26468a07473ae074183ae772063ae3770202e63ac772063ac3770202c63ae0750749740debd9eb09b9ffffffff7202f7d98bc15b5e5fc9c38b442404538b4c240c56578b5004558b70088b780c8b298bdf33de23da33df03dd8b288d9c1d78a46ad7c1c3078bc603da33c223c38b690433c603fd0556b7c7e803f8c1c70c8bc203fb33c323c78b690833c203f505db70202403
        8bff558bec5151dd450856dc15f817957c33d233f6dfe0f6c4057a02d9e0b80000f07fdd5df8394514b90000f0ff753e3955107578dd45f8dc1de817957cdfe0f6c4410f8482000000dd45f8dc1de817957cdfe0f6c4058b45180f8b89000000dd05f80f987c33f646e9ef000000394d14753a3955107535dd45f8dc1de817957cdfe0f6c4417507d9eee9cb000000dd45f8dc1de817957cdfe0f6c4058b45187abedd05f00f987ce9b000000039450c753f3955080f85a4000000dd4510dc1df817957cdfe0f6c441750bdd05f00f987ce984000000dd4510dc1df817957cdf
        '''.strip().split('\n')

        source = iter(res[0].decode('hex'))

        import ia32
        print repr(ia32.consume(source))
        raise NotImplementedError