网站里做任务,现在做网站建设的公司多么,手机上可以做网站,做网页的编程语言使用Frida能够方便地获取到DLL基址#xff0c;还能修改寄存器值。首先要通过任务管理器获得进程的PID#xff0c;然后写Python脚本把Frida附加到这个PID进程#xff0c;根据IDA分析出来的函数地址#xff0c;HOOK到目标函数#xff0c;修改寄存器的值#xff0c;最终实现…使用Frida能够方便地获取到DLL基址还能修改寄存器值。首先要通过任务管理器获得进程的PID然后写Python脚本把Frida附加到这个PID进程根据IDA分析出来的函数地址HOOK到目标函数修改寄存器的值最终实现控制进程逻辑。
获取PID
在任务管理器的详细信息里获得进程的PID。
代码实现
import frida
import sysdef main(target_process):session frida.attach(target_process)script session.create_script(// 获取基地址 3.9.2.23const baseAttr Module.findBaseAddress(xx.dll);console.log(xx.dll基地址: baseAttr);// 函数地址 revokemsg// 调用SyncMgr::ProcessRevokeMsg 0x10D13470const revokeMsgFunAddr getRealAddr(0x10D23BC0);console.log(函数地址, revokeMsgFunAddr);// 函数注入Interceptor.attach(revokeMsgFunAddr, {onEnter(args) {// 用来判断是否Hook成功// console.log( revokeMsg );// 查看和修改esiconsole.log(this.context.esi);// 设置esi的值跳过判断this.context.esi 0;}});// 从IDA地址转化到内存地址function getRealAddr(addr) {// IDA基地址在IDA View-A顶部的HEADER里查到const idaBase ptr(0x10000000);const offset ptr(addr).sub(idaBase); // 偏移const result ptr(baseAttr).add(offset); // 实际内存地址return result;})script.load()print(程序附加成功)sys.stdin.read()session.detach()if __name__ __main__:target_process 4496main(target_process)参考
https://frida.re/docs/examples/windows/