-
-
[旧帖] 关于劫持DLL 的一些疑惑 涉及汇编和Delphi 0.00雪花
-
发表于: 2010-10-30 05:02 3786
-
在看了标题为:关于D3D注入受驱动保护的游戏 例如(DNF.exe)
后产生的疑惑,实际上是解决了的,但是想问问是不是和我推断的一样
在那个帖子里,用到的是Delphi 进行劫持的
我是不懂这门语言的,看了N次,看懂了一点,
我是用PB(Power Basic) 是一个支持内嵌汇编的平台 用它解决的
主要是想知道同样是内嵌汇编 为什么PB就不行呢
初期我也是学那帖子一样操作:获取真DLL 函数地址,然后 程序 会调用我的DLL
进入后用汇编跳转 JMP 真函数地址
但是出现了错误
然后就是我现在提问发帖的原因了
这是那帖子其中一个函数劫持的关键
procedure OsThunkD3dContextCreate; asm jmp POldOsThunkD3dContextCreate end;
我没有调试Delphi版的这个DLL,我想问,它加载后的汇编是不是
伪DLL函数:OsThunkD3dContextCreate -> JMP 真DLL函数:OsThunkD3dContextCreate
中间不会有任何出栈入栈的操作?
因为我PB调试时候出现很多PUSH 的东西。。导致错误的,然后用OB修改了 伪DLL函数入口 直接JMP 到真DLL函数 时候,执行就通过了!!
==================================================
解决的办法是用CALL 代替JMP
DECLARE Function DLLOsThunkD3dContextCreate LIB "old_d3d8thk.DLL" Alias "OsThunkD3dContextCreate" (BYVAL hDirectDrawLocal As DWORD , BYVAL hSurfColor As DWORD , BYVAL hSurfZ As DWORD , BYVAL pdcci As DWORD) ASDWORD
Function OsThunkD3dContextCreate LIB "old_d3d8thk.DLL" Alias "OsThunkD3dContextCreate" (BYVAL hDirectDrawLocal As DWORD , BYVAL hSurfColor As DWORD , BYVAL hSurfZ As DWORD , BYVAL pdcci As DWORD) EXPORT As DWORD
FUNCTION = DLLOsThunkD3dContextCreate(hDirectDrawLocal , hSurfColor , hSurfZ, pdcci )
End Function
后产生的疑惑,实际上是解决了的,但是想问问是不是和我推断的一样
在那个帖子里,用到的是Delphi 进行劫持的
我是不懂这门语言的,看了N次,看懂了一点,
我是用PB(Power Basic) 是一个支持内嵌汇编的平台 用它解决的
主要是想知道同样是内嵌汇编 为什么PB就不行呢
初期我也是学那帖子一样操作:获取真DLL 函数地址,然后 程序 会调用我的DLL
进入后用汇编跳转 JMP 真函数地址
但是出现了错误
然后就是我现在提问发帖的原因了
这是那帖子其中一个函数劫持的关键
procedure OsThunkD3dContextCreate; asm jmp POldOsThunkD3dContextCreate end;
我没有调试Delphi版的这个DLL,我想问,它加载后的汇编是不是
伪DLL函数:OsThunkD3dContextCreate -> JMP 真DLL函数:OsThunkD3dContextCreate
中间不会有任何出栈入栈的操作?
因为我PB调试时候出现很多PUSH 的东西。。导致错误的,然后用OB修改了 伪DLL函数入口 直接JMP 到真DLL函数 时候,执行就通过了!!
==================================================
解决的办法是用CALL 代替JMP
DECLARE Function DLLOsThunkD3dContextCreate LIB "old_d3d8thk.DLL" Alias "OsThunkD3dContextCreate" (BYVAL hDirectDrawLocal As DWORD , BYVAL hSurfColor As DWORD , BYVAL hSurfZ As DWORD , BYVAL pdcci As DWORD) ASDWORD
Function OsThunkD3dContextCreate LIB "old_d3d8thk.DLL" Alias "OsThunkD3dContextCreate" (BYVAL hDirectDrawLocal As DWORD , BYVAL hSurfColor As DWORD , BYVAL hSurfZ As DWORD , BYVAL pdcci As DWORD) EXPORT As DWORD
FUNCTION = DLLOsThunkD3dContextCreate(hDirectDrawLocal , hSurfColor , hSurfZ, pdcci )
End Function
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: