Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Entry Point: 0x84E73552
- //Structure Mapped by Bitwise
- //Updated and modified by Mario
- typedef struct _ACStruct{
- BYTE OnlineIP[4]; //0x00-0x04 (Randomize)
- QWORD MachineId; //0x04-0x0C (Randomize)
- BYTE Enet; //0x0C-0x12 (Randomize)
- SHORT Padding1; //0x12-0x14 (0x0000)
- FLOAT fUnknown[2]; //0x14-0x1C (fUnknown[0] = *(float*)(0x849F6630); fUnknown[1] = *(float*)(0x849F6634);)
- SHORT sUnknown; //0x1C-0x1E (sUnknown = ((*(int*)0x8466D5DC) >> 10);)
- BYTE RetailFlag; //0x1E-0x1F (0x3)
- CHAR ConsoleSerial[0xC]; //0x1F-0x2B (Randomize)
- CHAR Padding2; //0x2B-0x2C (0x00)
- CHAR ConsoleId[0xC]; //0x2C-0x38 (Randomize)
- SHORT KernalVersion; //0x38-0x3A (0x42FE)
- } ACStruct, *PAW_RESP;
- Unknown Short Details:
- .text:822EA174 lis r9, ((dword_84639700+0x10000)@h) # start
- .text:822EA178 lis r8, 3 # 0x33EDC # r8 = 0x33EDC
- .text:822EA17C addi r7, r9, -0x6900 # dword_84639700 # r7 = 0x84639700
- .text:822EA180 ori r6, r8, 0x3EDC # 0x33EDC # r6 = 0x33EDC
- .text:822EA184 li r5, 2
- .text:822EA188 addi r4, r1, 0x160+var_100
- .text:822EA18C addi r3, r1, 0x160+var_F0
- .text:822EA190 lwzx r11, r7, r6 # r11 = 0x8466D5DC (Math: 0x84639700(r7) + 0x33EDC(r6) = 0x8466D5DC(r11))
- .text:822EA194 srwi r10, r11, 10 # r10 = 0x8466D5DC >> 10
- .text:822EA198 sth r10, 0x60(r1) # Response + 0x1C = r10
- So you need to make the unknown short: 0x8466D5DC >> 10
- Unknown Float Details:
- Same exact thing as the unknown short, just reverse a few lines.
- So you need to make the unknown float: 0x849F6630 and 0x849F6634
- //TU7 Anticheat Functions
- Anticheat_answerChallenges: 0x821E3EE8
- Anticheat_buildChallenges: 0x822EA018
- //SaveStub
- inline __declspec() int answerChallenges(int r3, int r4, int r5)
- {
- __asm
- {
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- blr
- }
- }
- //answerChallenges Hook
- //Hook with HookFunctionStart
- //Hook made by Mario
- DWORD AWBypassHook(int Unknown, int Anticheat, int StructPointer)
- {
- //Define Variables
- short shUnknown; float flUnknown[2];
- //Allocate Buffer
- ACStruct* Response = (ACStruct*)malloc(0x3A);
- //Null Buffer in Memory
- memset((void*)(StructPointer + 0x22), 0, 0x3A);
- //Get Data From Memory
- shUnknown = ((*(int*)0x8466D5DC) >> 10);
- flUnknown[0] = *(float*)(0x849F6630);
- flUnknown[1] = *(float*)(0x849F6634);
- //Build Response Buffer
- memcpy(&Response->OnlineIP, IPAddress, 4);
- memcpy(&Response->MachineId, MachineId, 8);
- memcpy(&Response->Enet, Enet, 6);
- Response->Padding1 = 0x0000;
- memcpy(&Response->fUnknown, flUnknown, 8);
- Response->sUnknown = shUnknown;
- Response->RetailFlag = 0x03;
- memcpy(&Response->ConsoleSerial, ConsoleSerial, 12);
- Response->Padding2 = 0x00;
- memcpy(&Response->ConsoleId, ConsoleIndex, 12);
- Response->KernalVersion = 0x42FE;
- //Store Response
- memcpy((void*)(StructPointer + 0x22), Response, 0x3A);
- //Notify Client
- XNotify(L"Challenge Spoofed!");
- //Free Allocated Memory
- free(Response);
- //Return SaveStub
- return answerChallenges(Unknown, Anticheat, StructPointer);
- }
- //Call
- HookFunctionStart((PDWORD)0x821E3EE8, (PDWORD)answerChallenges, (DWORD)AWBypassHook);
Add Comment
Please, Sign In to add comment