请选择 进入手机版 | 继续访问电脑版

郁金香灬老师 游戏安全  驱动 逆向调试 C/C++编程  脚本 UE4/UE5

找回密码
立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
发新帖
课程大纲和价格
官方联系方式2024在线课大纲QQ咨询

34万

积分

120

好友

131

主题
发表于 2023-2-4 23:42:29 | 查看: 4738| 回复: 0
经分析 UE4.24与UE4.27算法有所不同
/*UE4.27里的 GName算法
00007FF6F3ECC13 | 55                      | push rbp                                         |
00007FF6F3ECC13 | 48 8D AC 24 B0 F0 FF FF | lea rbp,qword ptr ss:[rsp-F50]                   |
00007FF6F3ECC14 | B8 50 10 00 00          | mov eax,1050                                     |
00007FF6F3ECC14 | E8 C3 DD DF 02          | call deadbydaylight-win64-shipping.7FF6F6CC9F10  |
00007FF6F3ECC14 | 48 2B E0                | sub rsp,rax                                      |
00007FF6F3ECC15 | 48 8B 05 D1 9F F1 05    | mov rax,qword ptr ds:[7FF6F9DE6128]              |
00007FF6F3ECC15 | 48 33 C4                | xor rax,rsp                                      |
00007FF6F3ECC15 | 48 89 85 40 0F 00 00    | mov qword ptr ss:[rbp+F40],rax                   |
00007FF6F3ECC16 | 80 3D 10 3F B1 06 00    | cmp byte ptr ds:[7FF6FA9E0078],0                 |
00007FF6F3ECC16 | 8B FA                   | mov edi,edx                                      |
00007FF6F3ECC16 | 8B D9                   | mov ebx,ecx                                      |
00007FF6F3ECC16 | 74 09                   | je deadbydaylight-win64-shipping.7FF6F3ECC177    |
00007FF6F3ECC16 | 4C 8D 05 0B 3F B1 06    | lea r8,qword ptr ds:[<GName>]                    |
00007FF6F3ECC17 | EB 16                   | jmp deadbydaylight-win64-shipping.7FF6F3ECC18D   |
00007FF6F3ECC17 | 48 8D 0D 02 3F B1 06    | lea rcx,qword ptr ds:[<GName>]                   |
00007FF6F3ECC17 | E8 1D AD FF FF          | call deadbydaylight-win64-shipping.7FF6F3EC6EA0  |
00007FF6F3ECC18 | 4C 8B C0                | mov r8,rax                                       |
00007FF6F3ECC18 | C6 05 EB 3E B1 06 01    | mov byte ptr ds:[7FF6FA9E0078],1                 |
00007FF6F3ECC18 | 8B D3                   | mov edx,ebx                                      |
00007FF6F3ECC18 | 0F B7 C3                | movzx eax,bx                                     |
00007FF6F3ECC19 | C1 EA 10                | shr edx,10                                       | 00000000005F D4AB
00007FF6F3ECC19 | 89 44 24 24             | mov dword ptr ss:[rsp+24],eax                    | D4AB
00007FF6F3ECC19 | 89 54 24 20             | mov dword ptr ss:[rsp+20],edx                    | 005F
00007FF6F3ECC19 | 48 8B 4C 24 20          | mov rcx,qword ptr ss:[rsp+20]                    |
00007FF6F3ECC1A | 48 C1 E9 20             | shr rcx,20                                       | D4AB
00007FF6F3ECC1A | C1 E1 02                | shl ecx,2                                        | D4AB<<2
00007FF6F3ECC1A | 49 03 4C D0 10          | add rcx,qword ptr ds:[r8+rdx*8+10]               | qword(GName+005F*8+10)+(D4AB<<2)
00007FF6F3ECC1A | C6 44 24 3C 01          | mov byte ptr ss:[rsp+3C],1                       |
00007FF6F3ECC1B | 0F B7 41 04             | movzx eax,word ptr ds:[rcx+4]                    | word(qword(GName+005F*8+10)+(D4AB<<2)+4)  //length
00007FF6F3ECC1B | 48 8D 51 06             | lea rdx,qword ptr ds:[rcx+6]                     | qword(GName+005F*8+10)+(D4AB<<2)+6   pointer
00007FF6F3ECC1B | D1 E8                   | shr eax,1                                        |
00007FF6F3ECC1B | F6 41 04 01             | test byte ptr ds:[rcx+4],1                       |
00007FF6F3ECC1C | 89 44 24 38             | mov dword ptr ss:[rsp+38],eax                    | word(qword(GName+005F*8+10)+(D4AB<<2)+4)
00007FF6F3ECC1C | 48 8D 44 24 30          | lea rax,qword ptr ss:[rsp+30]                    |
00007FF6F3ECC1C | 48 89 54 24 30          | mov qword ptr ss:[rsp+30],rdx                    |
00007FF6F3ECC1C | 75 05                   | jne deadbydaylight-win64-shipping.7FF6F3ECC1D6   |
00007FF6F3ECC1D | C6 44 24 3C 00          | mov byte ptr ss:[rsp+3C],0                       |
00007FF6F3ECC1D | 0F 10 00                | movups xmm0,xmmword ptr ds:[rax]                 |
*/
  1. <div class="quote"><blockquote>
  2. #include<windows.h>

  3. UINT64 R8(UINT_PTR base)
  4. {
  5.   return *(UINT64*)base;
  6. }

  7. UINT16 R2(UINT_PTR base)
  8. {
  9.   return *(WORD*)base;
  10. }

  11. //返回名字 qword(GName+005F*8+10)+(D4AB<<2)+6
  12. const char* GetFName(int FNANEID)
  13. {
  14. WORD ID1=HIWORD(FNANEID);
  15. WORD ID2=LOWORD(FNANEID);
  16. UINT_PTR UName=R8(GName+ID1*8+10)+(ID2<<2)+6;
  17. return (char*)UName;
  18. }

  19. //返回长度 word(qword(GName+005F*8+10)+(D4AB<<2)+4)  //length
  20. int GetFNameLen(int FNANEID)
  21. {
  22. WORD ID1=HIWORD(FNANEID);
  23. WORD ID2=LOWORD(FNANEID);
  24. return R2(R8(GName+ID1*8+0x10)+(ID2<<2)+4);
  25. }
复制代码


4.24的算法

         qword(GName+HIWORD(FNANEID)*8+10)+LOWORD(FNANEID)*2+2 //字符串
         word(qword(GName+HIWORD(FNANEID)*8+10)+LOWORD(FNANEID)*2)>6 //字符串长度
4.27的算法
     qword(GName+HIWORD(FNANEID)*8+10)+(LOWORD(FNANEID)<<2)+6 //字符串地址

     word(qword(GName+HIWORD(FNANEID)*8+10)+(LOWORD(FNANEID)<<2)+4)  //字符串长度








4.24的算法

         qword(GName+HIWORD(FNANEID)*8+10)+LOWORD(FNANEID)*2+2 //字符串

4.27的算法
     qword(GName+HIWORD(FNANEID)*8+10)+(LOWORD(FNANEID)<<2)+6 //字符串地址



4.24的算法

        word(qword(GName+HIWORD(FNANEID)*8+10)+LOWORD(FNANEID)*2)>6 //字符串长度
4.27的算法

        word(qword(GName+HIWORD(FNANEID)*8+10)+(LOWORD(FNANEID)<<2)+4)  //字符串长度






        






游戏安全课程 学员办理咨询联系QQ150330575 手机 139 9636 2600  免费课程 在 www.bilibili.com 搜 郁金香灬老师
您需要登录后才可以回帖 登录 | 立即注册

QQ咨询

QQ|Archiver|手机版|小黑屋|郁金香游戏技术

GMT+8, 2024-3-29 00:32 , Processed in 0.083154 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表