首页
社区
课程
招聘
[旧帖] 关于劫持DLL 的一些疑惑 涉及汇编和Delphi 0.00雪花
发表于: 2010-10-30 05:02 3786

[旧帖] 关于劫持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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//