Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[3.7.19.10] Odszyfrowywanie zewnętrznych podmiotów
#1
Kod :     Kod:   typedef __int64 (__fastcall * DecryptF) (DWORD_PTR); ULONGLONG globalCryptTable = 0x3C35120; size_t calcFuncLengthEx (uint64_t funcAddress, BYTE end = 0xC3) {length_t length = 0; while (mem -> Czytaj <BYTE> (funcAddress ++)! = end) długość ++; długość powrotu; } template <class T> T __ROL__ (wartość T, liczba int) {const uint nbits = sizeof (T) * 8; if (count> 0) {count% = nbits; T high = value >> (nbits - count); if (T (- 1) <0) // wartość oznaczona high & = ~ ((T (- 1) << count)); wartość << = liczba; wartość | = wysoka; } else {count = - count% nbits; T low = wartość << (nbits - count); value >> = count; wartość | = niska; } zwracana wartość; } Inline uint8 __ROR1__ (uint8 value, int count) {return __ROL__ ((uint8) value, - count); } inline uint16 __ROL2__ (uint16 value, int count) {return __ROL__ ((uint16) value, count); } inline uint16 __ROR2__ (uint16 value, int count) {return __ROL__ ((uint16) value, - count); } inline uint64 __ROR8__ (wartość uint64, liczba int) {return __ROL__ ((uint64) value, - count); } #Define BYTEn (x, n) (* ((_BYTE *) & (x) + n)) #define WORDn (x, n) (* ((_WORD *) & (x) + n)) #define WORD1 (x) WORDn (x, 1) #define BYTE1 (x) BYTEn (x, 1) PVOID codeMemAct = NULL; DWORD_PTR DecryptActors (DWORD_PTR cryptedOffset) {if (codeMemAct == NULL) codeMemAct = VirtualAlloc (0, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE); uint32 v1 = mem -> Przeczytaj <uint32> (cryptedOffset); DWORD_PTR v2 = mem -> Przeczytaj <DWORD_PTR> (cryptedOffset + 8); DWORD_PTR v4 = globalCryptTable + i64GameBase; auto v5 = (unsigned __int16) __ROR2__ (v1 - 78, - 78) ^ ((unsigned __int16) (WORD1 (v1) + 42) + 42706); DWORD_PTR targetFunc = mem -> Przeczytaj <DWORD_PTR> (v4 + (8 * ((unsigned __int8) __ROR1__ ((__ROR2__ (v1 - 78, - 78) ^ (BYTE2 (v1) - 4)) + 66, 66) ^ ((unsigned __int8) __ROR1__ (BYTE1 (v5) + 98, -98) + 220))% 128))); ULONG delta = mem -> Czytaj <ULONG> (targetFunc + 10); if (! mem -> ReadStr (targetFunc, PVOID ((__int64) codeMemAct), 9)) zwraca 0; auto funcL = calcFuncLengthEx ((uint64_t) (targetFunc + 14 + delta)); if (! mem -> ReadStr (targetFunc + 14 + delta, PVOID ((__int64) codeMemAct + 9), funcL)) zwraca 0; if (! mem -> ReadStr (targetFunc + 9 + 5, PVOID ((__int64) codeMemAct + 9 + funcL), 0x45)) zwraca 0; DecryptF Decrypt = (DecryptF) ((__int64) codeMemAct); auto res = __ROR8__ (Deszyfruj (v2 ^ v1), - 118); ZeroMemory (codeMemAct, 1024); powrót res; }   Stosowanie :     Kod:   pEntityList = DecryptActors (gll :: pULevel + 0xA0); auto ObjectCount = mem -> Przeczytaj <int> (pEntityList + 0x8); auto pList = mem -> Przeczytaj <DWORD_PTR> (pEntityList); for (auto nIndex = 0; nIndex <ObjectCount; nIndex ++) AActor * Aktor = mem -> Czytaj <AActor *> (pList + (nIndex * sizeof (DWORD_PTR)));
Reply
#2
Thx, czy istnieje podobne odszyfrowanie UWorld?
Reply
#3
dzięki. jak zdobyć Uworld?
Reply
#4
Dzięki.
Reply
#5
dzięki. how get Uworld i Gname?
Reply
#6
Byłoby miło, gdybyś opublikował metodę deszyfrowania dla UWorld & GNames
Reply
#7
Wciąż nie dostaję Uworld
Reply
#8
Zacytować: Napisał gamefox Wciąż nie dostaję Uworld [3.7.19.10] Zewnętrzne UWorld i GNames & Actors
Reply
#9
czym jest ReadStr?
Reply
#10
Zacytować: Originally Posted by x78807100 czym jest ReadStr? wygląda tak samo jak ReadVirtualMemory.
Reply




Users browsing this thread: 1 Guest(s)