ReplaceImplEngine.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:FRAPL 作者: FriedAppleTeam 项目源码 文件源码
def handleReplaceFunc(self, screenEA = None):
        if screenEA is not None:
            func = get_func(screenEA)
        else:
            func = get_func(ScreenEA())
        if func is None:
            return

        address = func.startEA;

        offset, moduleName = self.getAddressDetails(address)

        replaceDlg = FunctionReplaceDialog(moduleName, "%X" % address, get_func_name(address), None)
        replaceDlg.Compile()
        replaceDlg.script.value = ""
        ok = replaceDlg.Execute()
        if ok != 1:
            return

        replace = FuncReplace()
        replace.id = address
        replace.symbol = get_func_name(address)
        replace.address = offset
        replace.module = moduleName
        replace.moduleImport = False
        replace.ret_type = "\'" + replaceDlg.ret_type.value + "\'"
        replace.recentSrcFile = replaceDlg.recentScriptFile
        replace.script = replaceDlg.script.value
        replace.args_str = replaceDlg.args.value
        replace.arg_types = ""
        replace.arg_names = ""

        if replace.args_str != "":
            args_list = replace.args_str.split(",")

            for arg in args_list:
                arg_list = arg.split()
                replace.arg_types += "\'" + arg_list[0] + "\', "
                replace.arg_names += arg_list[1] + ", " 

            replace.arg_types = replace.arg_types[:-2]
            replace.arg_names = replace.arg_names[:-2]

        outJSON = json.dumps({
            "req_id": kFridaLink_SetReplaceRequest, 
            "data": replace.genSetRequest()
        })

        SetColor(address, CIC_FUNC, kIDAViewColor_ReplacedFunc)
        refresh_idaview_anyway()
        self.clientSocket.sendto(outJSON, self.clientAddress)
        self.funcReplaceMap[address] = replace

        self.funcReplaceView.setContent(self.funcReplaceMap)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号