def handleHookFuncEdit(self, screenEA = None):
if self.hookedFunction() == False:
return
if screenEA is not None:
func = get_func(screenEA)
else:
func = get_func(ScreenEA())
if func is None:
return
address = func.startEA;
entry = self.idbHookMap[address]
entry.hook.symbol = get_func_name(address)
hookDlg = FunctionHookDialog(entry.hook.module, "%X" % entry.hook.id, entry.hook.symbol, entry.hook.enterRecentSrcFile, entry.hook.leaveRecentSrcFile)
hookDlg.Compile()
hookDlg.script_enter.value = entry.hook.enterScript
hookDlg.script_leave.value = entry.hook.leaveScript
hookDlg.trigger.value = 0 if entry.hook.once == True else 1
ok = hookDlg.Execute()
if ok != 1:
return
flags = HookEntry.UDP_NONE
once = True if hookDlg.trigger.value == 0 else False
if entry.hook.once != once:
entry.hook.once = once
flags |= HookEntry.UPD_TRIGGER
entry.hook.enterRecentSrcFile = hookDlg.recentScriptFileEnter
if entry.hook.enterScript != hookDlg.script_enter.value:
entry.hook.enterScript = hookDlg.script_enter.value
flags |= HookEntry.UPD_SCRIPT
entry.hook.leaveRecentSrcFile = hookDlg.recentScriptFileLeave
if entry.hook.leaveScript != hookDlg.script_leave.value:
entry.hook.leaveScript = hookDlg.script_leave.value
flags |= HookEntry.UPD_SCRIPT
outJSON = json.dumps({
"req_id": kFridaLink_UpdHookRequest,
"data": entry.genUpdRequest(flags)
})
self.clientSocket.sendto(outJSON, self.clientAddress)
评论列表
文章目录