thunk1

来源:互联网 发布:数码视讯怎么样知乎 编辑:程序博客网 时间:2024/05/22 06:17

Thunk

我所知道的Thunk技术在C++里面有两个应用,一个是在C++语言编译器对虚函数支持方面,还有一个就是在WIN API的回调函数方面。

 

1

Q:那么什么是Thunk技术呢?

A:这个问题其实问的不是很好,可以这么问,Thunk技术可以解决什么问题呢?Thunk技术就是解决在执行期改变CPU所执行的机器指令这个问题。

 

2

Q:怎么可能,一段程序不就是机器指令集嘛,怎么可能在运行时候改变机器指令执行顺序?

A:这里的改变是相对传统意义上CPU所执行的机器指令顺序来说的。具体来说,一般情况下,程序在运行时,机器指令是存在内存中的code segment里的,然后读到CPU中(缓存中),由EIP寄存器存储当前(将要)执行的机器指令,交由CPU执行。但是Thunk允许你将机器指令存储在data segment里,经过一些小技巧,这些机器指令最后能被CPU执行。

 

3

Q:看上去很Hacking的样子,应该很难吧?

A:Thunk技术本身并不复杂,但涉及到的知识点比较多,如果想搞的比较清楚,最需要的是耐心和刨根问底的态度。不过如果你耐心看完这篇QA,应该会有所了解: )

原创粉丝点击