问题标签 [hotpatching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6148 浏览

assembly - 有人知道“mov edi,edi”是做什么的吗?

mov edi,edi 对我来说没有意义,这是为了什么?

0 投票
0 回答
274 浏览

.net - 如何为 .NET dll 创建 Hotpatchable Image?

我已经了解了使用Windows Hotpatching功能无需重新启动即可更新 Windows Server OS 的能力。MSDN 说可以通过一个简单的 switch为 VC++ 项目启用热补丁。

.NET 项目是否有类似的开关/设置?如果不是,是否可以使用外部工具进行操作?

0 投票
4 回答
154 浏览

c++ - 在函数末尾添加 N 个字节数以进行热补丁

是否可以在函数末尾添加 N 个字节数?

我的简单想法是添加以下代码:

还有其他方法吗? (使用代码、编译器或其他方法)

我需要它来热补丁功能。我有一个有一些 IF 语句的函数,该函数每秒被调用 10 次或更频繁。所以,为了提高性能,我需要少做一些检查,比如“我需要执行那个代码吗?”。IF 语句中的布尔值不会经常更改(我会说很少)。我也想实现,如果我不需要执行一些代码,我不需要检查。

0 投票
3 回答
1595 浏览

c++ - 计算热补丁/内联函数挂钩的偏移量

来自http://lastfrag.com/hotpatching-and-inline-hooking-explained/

Q1)代码是否从高内存进入低内存,反之亦然?

Q2)更重要的是,在计算replacement offset的过程中,为什么要减去函数前导码?是因为偏移量是从指令的结尾而不是开头开始的吗?

完整代码:

Q3) 在这段代码中,jmp 指令的相对地址被替换了;relAddrSet 是指向原始目的地的指针;to 是指向新目的地的指针。我不明白to地址的计算,为什么你必须将原始目的地添加到functionForHook + opcodeOffset?

0 投票
1 回答
1316 浏览

c++ - x64 MOV、JMP 指令使程序崩溃

我正在学习如何修补功能,并且我有以下代码在 32 位程序中运行良好。但是,我试图让它在 64 位程序中也能工作,但它只是崩溃了。

任何想法代码有什么问题?

0 投票
1 回答
1218 浏览

c++ - 热补丁后如何调用原始函数

我编写了代码来修补“睡眠”功能,例如来自 Kernel32.dll。修补工作得很好。补丁的删除工作得很好。但是,调用原始函数根本不起作用。它崩溃得很厉害。

任何想法我的代码缺少什么?

0 投票
1 回答
1890 浏览

c - 挂钩 - 热补丁

我正在尝试挂钩 Windows API 函数 FindWindowA()。我用下面的代码成功地做到了,没有“热补丁”它:我已经覆盖了函数开头的字节。调用 myHook() 并在调用 FindWindowA() 时显示一个消息框。

user32.dll 启用了热补丁,我想在实际函数之前覆盖 NOP,而不是覆盖函数本身。但是,当我将热补丁设置为 TRUE 时,下面的代码将不起作用。当 FindWindowA() 被执行时它什么也不做。

你能告诉我有什么问题吗?

谢谢你。

0 投票
0 回答
79 浏览

javascript - 如何在发布后更新长寿命页面上的 javascript/css 资产?

假设一个站点有多个长期存在的应用程序,是否有一些简单的策略可以在生产中热交换 javascript/css 代码?

我看到一些网站(例如关键跟踪器)显示一个横幅,上面写着“有更新,请刷新”。理想情况下,该解决方案更像是开发环境中的实时更新。类似的东西还存在吗?

0 投票
1 回答
750 浏览

c - 挂钩框架(Detours-like)

我正在寻找一个 C 库/框架,它允许我替换内存中的函数并将它们重定向到我自己的实现,同时仍然允许我的实现调用原始实现。

这在 Linux 系统上似乎是一个相当罕见的需求,大概是因为 LD_PRELOAD 涵盖了运行时功能替换事物的大部分方面。

0 投票
0 回答
133 浏览

windows - MSVC/Win32是否保证函数起始地址对齐

这个问题是关于热补丁的。热补丁的核心是将前两个字节的指令替换为一个两字节的短跳转指令。Microsoft 保证可热补丁函数的第一条指令至少是两个字节。我们称之为 热点

为确保替换操作是原子操作,热点的地址必须至少 16 位对齐,MSDN 对此只字未提。

所以我的问题是:MSVC/Win32 是否保证函数起始地址是对齐的?