记一次dll劫持寻找白文件的经验
Contents
0x01.dll导出函数混乱
寻找到的dll导出函数 会有例如这种函数名 :?MyFunction@@YGHH@Z :_MyFunction@4
C++编译器在生成DLL时,会对导出的函数进行名字改编,并且不同的编译器使用的改编规则不一样,因此改编后的名字也是不同的
__stdcall会使导出函数名字前面加一个下划线,后面加一个@再加上参数的字节数,比如_MyFunction@4的参数(int iVariant)就是4个字节
__fastcall与 __stdcall类似,不过前面没有下划线,而是一个@,比如@MyFunction@4
__cdecl则是始函数名。
我们查看IAT如果发现dll中的导出函数名字为:?MyFunction@@YGHH@Z 写黑dll时就写这样的代码
|
|
如果为:_MyFunction@4 只需加上extern “C” _declspec(dllexport) 就行
|
|
//ps:@后面的为参数的字节 具体类型可以用IDA反编译看看参数
参考连接:https://blog.csdn.net/superzhaifd/article/details/38922121