|
发表于 2023-2-4 23:42:29
|
查看: 6387 |
回复: 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] |
*/ - <div class="quote"><blockquote>
- #include<windows.h>
- UINT64 R8(UINT_PTR base)
- {
- return *(UINT64*)base;
- }
- UINT16 R2(UINT_PTR base)
- {
- return *(WORD*)base;
- }
- //返回名字 qword(GName+005F*8+10)+(D4AB<<2)+6
- const char* GetFName(int FNANEID)
- {
- WORD ID1=HIWORD(FNANEID);
- WORD ID2=LOWORD(FNANEID);
- UINT_PTR UName=R8(GName+ID1*8+10)+(ID2<<2)+6;
- return (char*)UName;
- }
-
- //返回长度 word(qword(GName+005F*8+10)+(D4AB<<2)+4) //length
- int GetFNameLen(int FNANEID)
- {
- WORD ID1=HIWORD(FNANEID);
- WORD ID2=LOWORD(FNANEID);
- return R2(R8(GName+ID1*8+0x10)+(ID2<<2)+4);
- }
复制代码
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 搜 郁金香灬老师
|
|