首页
社区
课程
招聘
[原创]游戏透视Open的引擎通杀包括CS1.5 1.6 网络游戏CSOL
发表于: 2014-11-20 21:22 10371

[原创]游戏透视Open的引擎通杀包括CS1.5 1.6 网络游戏CSOL

2014-11-20 21:22
10371
我是小叮当  

这份代码是Open的引擎通杀的透视

本源码由叮当程序编写并发布,请各位保持原版权,谢谢!

本代码在VS2008编译通过  

勿用于实际游戏 只作为技术参考

#pragma comment(lib,"OpenGL32.lib")
#pragma comment(lib,"GLu32.lib")

#include <windows.h>
#include <string>
#include <tlhelp32.h>
#include <iostream>
#include <gl\gl.h>
#include <gl\glu.h>

typedef void ( APIENTRY *glBegin_t )( GLenum );
typedef void ( APIENTRY *glEnd_t )( void );
typedef void ( APIENTRY *glClear_t )( GLbitfield );
typedef void ( APIENTRY *glVertex3fv_t )( const GLfloat *v );
typedef void ( APIENTRY *glVertex3f_t )( GLfloat x,  GLfloat y,  GLfloat z );
typedef void ( APIENTRY *glEnable_t )( GLenum );

glBegin_t pglBegin = NULL;
glEnd_t pglEnd = NULL;
glClear_t pglClear = NULL;
glVertex3fv_t pglVertex3fv = NULL;
glVertex3f_t pglVertex3f = NULL;
glEnable_t pglEnable = NULL;

bool wallhack = false;

void DrawBox(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
{
glBegin(GL_QUADS);
glVertex3f(x,y,z);
glVertex3f(x+width,y,z);
glVertex3f(x+width,y+height,z);
glVertex3f(x,y+height,z);
glEnd();
}

void APIENTRY Hooked_glBegin( GLenum mode )
{
        if (GetAsyncKeyState(VK_F2)&1)
                wallhack = !wallhack;

        if (wallhack)
        {
                if(mode == GL_TRIANGLES || mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN)
                        glDepthRange(0, 0.5);
                else
                        glDepthRange(0.5, 1);
        }

        if(pglBegin)
                (*pglBegin)(mode);
}

void APIENTRY Hooked_glEnd( void )
{
        (*pglEnd)();
}

void APIENTRY Hooked_glVertex3fv( GLfloat *v )
{       
        (*pglVertex3fv)( v );
}

void APIENTRY Hooked_glVertex3f ( GLfloat x,  GLfloat y,  GLfloat z )
{
        (*pglVertex3f)( x, y, z );
}

void APIENTRY Hooked_glClear( GLbitfield mask )
{
        (*pglClear)( mask );
}

void APIENTRY Hooked_glEnable (GLenum cap)
{
               
                        DrawBox(200,100,0,50,30);//绘制一个方框...可以用来写方框 当初想搜坐标写方框来着
                    //方框代码 我没写完 地址只搜了一点 BY 叮当

        (*pglEnable)(cap);
}

void *DetourFunc( BYTE *src, const BYTE *dst, const int len )
{
        BYTE *jmp = (BYTE*)malloc( len + 5 );
        DWORD dwback;
        VirtualProtect( src, len, PAGE_READWRITE, &dwback );
        memcpy( jmp, src, len );
        jmp += len;
        jmp[0] = 0xE9;
        *(DWORD*)( jmp + 1 ) = (DWORD)( src + len - jmp ) - 5;
        src[0] = 0xE9;
        *(DWORD*)( src + 1 ) = (DWORD)( dst - src ) - 5;
        VirtualProtect( src, len, dwback, &dwback );
        return ( jmp - len );
}
void HookGL()
{//CSOL 人物透视 不完善 还只是个半透
        HMODULE hOpenGL = GetModuleHandle("opengl32.dll");
        pglVertex3fv =   (glVertex3fv_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glVertex3fv" ), (LPBYTE)&Hooked_glVertex3fv, 6 );
        pglVertex3f  =   (glVertex3f_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glVertex3f" ), (LPBYTE)&Hooked_glVertex3f, 6);
        pglBegin     =   (glBegin_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glBegin"),(LPBYTE)&Hooked_glBegin,6);
        pglEnd       =   (glEnd_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glEnd" ), (LPBYTE)&Hooked_glEnd, 6 );
        pglClear     =   (glClear_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glClear" ), (LPBYTE)&Hooked_glClear, 7 );
        pglEnable    =   (glEnable_t)DetourFunc( (LPBYTE)GetProcAddress(hOpenGL, "glEnable"), (LPBYTE)&Hooked_glEnable, 6);
}
       

DWORD WINAPI dwMainThread( LPVOID )
{       
        HookGL();

        return TRUE;
}

BOOL WINAPI DllMain( HINSTANCE hInstDLL,DWORD dwReason,LPVOID WINAPI lpReserved )
{
        if( dwReason==DLL_PROCESS_ATTACH )
                CreateThread(0,0,dwMainThread,0,0,0);

return TRUE;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 90
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
自己顶一下
2014-11-20 21:23
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
见你D3D也发过~
2014-11-20 21:49
0
雪    币: 90
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
专业研究!
2014-11-20 22:11
0
雪    币: 41
活跃值: (152)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
依旧是改变Z缓冲深度么?
2014-11-20 22:32
0
雪    币: 297
活跃值: (265)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
6
谢谢分享~~~~
2014-11-20 22:43
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
http://www.360bc.cn/forum.php?mod=viewthread&tid=470841&page=1#pid4058932
据不完全了解,上面这个才是原创
2014-11-20 23:44
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
8
都玩cf了谁玩cs啊!
2014-11-21 07:54
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
上面发的也不是最早的~~~至少我在11年的时候就已经知道并写过了。。。
2014-11-21 11:22
0
雪    币: 90
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
那个人就是我
2014-11-21 18:57
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我一直想通过自己努力 写一个“透明”程序~ 但是无奈 OD总是被检测到 ~
2014-11-27 15:17
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好吧,这样也可以
2014-12-3 12:52
0
雪    币: 77
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
hook掉 glShadeModel  然后禁用 深度就完事了!
楼主的代码随便 截取一段 百度 一大把 真的是原创么?
2014-12-30 22:38
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持楼主啊。。。。。
2015-1-4 11:24
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
make  支持一下
2015-1-4 19:40
0
雪    币: 90
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
Tiany 大哥 !!我QQ里有你
2015-1-4 23:41
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
mark支持
2015-1-5 00:38
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习一下怎么透视的
2015-1-5 08:22
0
游客
登录 | 注册 方可回帖
返回
//