首页
社区
课程
招聘
[原创]腾讯PC客户端初赛题解
发表于: 2021-4-12 23:36 4819

[原创]腾讯PC客户端初赛题解

2021-4-12 23:36
4819

1.

首先是F5看了一下 winmain的调用过程。发现读了两次PE文件,还有一个Opengl绘图函数。

2.
然后写代码 dump 两次读的文件。



根据exe的界面,发现这两个图片,就是Opengl绘图的背景图。

3.ida追了半天,没追到关键点,直接上CE和OD。发现OD对矩阵下不了断点,放弃OD,使用CE。

4.按FPS的搜法,先搜出全局坐标(x,y,z)。

然后搜视角矩阵,View。按未变动,变动,进行过滤。

过滤到了35个结果,然后全局坐标改为(0,0,-1),找到VIEW矩阵。

然后准备修改视角,因为百度到了18年的改法,也懒得计算了,直接照着改。
准备将-3修改为-90,-3左边的0修改为-17.5,最左边修改为-59。
但是发现改了立马就被改回去了,于是用CE下写入断点,nop掉赋值mov。

5.回到界面,出现flag。

 
int main()
{
    HANDLE a=CreateFileA("C:\\Users\\TalShang\\Desktop\\ki fastcallentry\\Project1\\Project1\\2.jpg",
        FILE_ALL_ACCESS,TRUE,NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
 
    DWORD pid = 13620;
    HANDLE handle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
    /*DWORD b=GetLastError();
    printf("Error:%x",b);*/
    DWORD addr = 0x007D0180;
    char* mem=(char*)malloc(0x9F97);
    SIZE_T readSize=0;
    ReadProcessMemory(handle,(LPVOID)addr,mem, 0x9F97,&readSize);
 
    WriteFile(a, mem, 0x9F97,NULL,NULL);
 
 
    system("pause");
    CloseHandle(a);
    CloseHandle(handle);
    return 0;
}
int main()
{
    HANDLE a=CreateFileA("C:\\Users\\TalShang\\Desktop\\ki fastcallentry\\Project1\\Project1\\2.jpg",
        FILE_ALL_ACCESS,TRUE,NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
 
    DWORD pid = 13620;
    HANDLE handle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
    /*DWORD b=GetLastError();
    printf("Error:%x",b);*/

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

收藏
免费 4
支持
分享
最新回复 (3)
雪    币: 1948
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
老哥 对安卓端TXAPP有研究没 
2021-4-12 23:47
0
雪    币: 401
活跃值: (4101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
木啊
2021-4-12 23:50
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
目标程序能上传论坛一份?
2021-4-22 16:54
0
游客
登录 | 注册 方可回帖
返回
//