View difference between Paste ID: ubQvR5eb and mq7fK6TE
SHOW: | | - or go back to the newest paste.
1
//BO3 Bypass By: OvaKill
2
3
#ifndef _BO3_BYPASS_DEFINES_H
4
5
#define _BO3_BYPASS_DEFINES_H
6
7
 
8
9
#include "stdafx.h"
10
11
#include "Vec.h"
12
13
#include <time.h>
14
15
 
16
17
BYTE IPAddress[4], ConsoleSerial[12], ConsoleIndex[12];
18
19
BYTE MachineId[] = { 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
20
21
BYTE Enet[] = { 0x00, 0x1D, 0xD8, 0x00, 0x00, 0x00 };
22
23
 
24
25
byte Response[] =
26
27
{
28
29
        0x46, 0x7C, 0x70, 0xB0,                                                                                                                 // IP Address [4 Bytes]
30
31
        0xFC, 0x00, 0x00, 0x00, 0xE6, 0xA5, 0xDD, 0xD1,                                                                 // Machine ID [8 Bytes]
32
33
        0xF5, 0xD7, 0xDA, 0xF1, 0x46, 0x21, 0x01, 0x10,                                                                 // MAC Address [8 Bytes]
34
35
        0x00, 0x00, 0x00, 0x00,                                                                                                                 // ChallengePadding 0 (Read Memory @ func_849AF534(float))
36
37
        0x00, 0x00, 0x00, 0x00,                                                                                                                 // ChallengePadding 1 (Read Memory @ func_849AF534 + 0x04(float))
38
39
        0x08, 0x60,                                                                                                                                             // ChallengePadding 2 (Read Memory @ func_84629B5C)
40
41
        0x03,                                                                                                                                                   // RetailFlag 0x01 = Active | 0x02 = Clean Retail (What Makes it Not?) | 01 + 02 = 0x03 = Active + Clean
42
43
        0x30, 0x31, 0x34, 0x32, 0x36, 0x31, 0x37, 0x39, 0x35, 0x32, 0x30, 0x37, 0x00,   // Console Serial [12 Bytes]
44
45
        0x30, 0x33, 0x32, 0x37, 0x35, 0x38, 0x31, 0x31, 0x33, 0x30, 0x35, 0x35,                 // Console ID
46
47
        0x42, 0xFE                                                                                                                                              // Unknown Padding
48
49
};
50
51
typedef struct _BO3_ChallengeResponse
52
53
{
54
55
        unsigned char abOnlineIP[4];//0x00-0x04
56
57
        unsigned long long qwMachineId;//0x04-0xC
58
59
        unsigned long long qwEnet;//0xC-0x14
60
61
        float fRegionLatitude;//0x14-0x18
62
63
        float fRegionLongtitude;//0x18-0x1C
64
65
        short shFreeAmount;//0x1C-0x1E
66
67
        unsigned char bSecurityFlag;//0x1E-0x1F
68
69
        char szConsoleSerial[0xD];//0x1F-0x2C
70
71
        char szConsoleId[0xC];//0x2C-0x38
72
73
        char szConsoleRetail[0x3];//0x01+0x02 = 0x03
74
75
        short shKernalVersion;//0x38-0x3A
76
77
        WORD Padding1;
78
79
        QWORD UnknownVector2;
80
81
        WORD UnknownShort;
82
83
        BYTE Padding2;
84
85
} BO3_ChallengeResponse, *pBO3_ChallengeResponse;
86
87
 
88
89
typedef enum BO3_ChallengeFlag : BYTE
90
91
{
92
93
        ACTIVE = 1,
94
95
        VALID = 2,
96
97
        INVALIDPRIVILEGE = 8,
98
99
        XBDM = 16,
100
101
} BO3_ChallengeFlag;
102
103
typedef enum _BO3_RenderFlag : BYTE
104
105
{
106
107
        HIGHLIGHT_RED = 18,
108
109
        HIGHLIGHT_HOT = 20,
110
111
        HIGHLIGHT_GREEN = 22,
112
113
        HIGHLIGHT_CYAN = 24,
114
115
        HIGHLIGHT_ORANGE = 26,
116
117
        HIGHLIGHT_YELLOW = 28,
118
119
        HIGHLIGHT_BLUE = 30,
120
121
} BO3_RenderFlag;
122
123
 
124
125
int XNetXnAddrToMachineIdHookDASH(XNCALLER_TYPE xnc, XNADDR  pxnaddr, unsigned long long MachineId)
126
127
{
128
129
        srand((unsigned int)time(0));
130
131
        MachineId = 0xFA00000000000000 | (0x2000000 | rand() % 0x7FFFFF);
132
133
        *(__int64*)0x8232BE18 = 0x386000014E800020; //BO3 bypass hash
134
135
        return 0;
136
137
}
138
139
 
140
141
 
142
143
inline __declspec() int answerChallenges(int r3, int r4, int r5)
144
145
{
146
147
        __asm
148
149
        {
150
151
                nop
152
153
                        nop
154
155
                        nop
156
157
                        nop
158
159
                        nop
160
161
                        nop
162
163
                        nop
164
165
                        blr
166
167
        }
168
169
}
170
171
 
172
173
void randomize()
174
175
{
176
177
        BYTE IPAddress[4], MachineId[8], Enet[8], ConsoleKey[13], ConsoleIndex[12], padding0[2], padding1[8];
178
179
        for (int i = 0; i < 2; i++)IPAddress[i] = rand() % 90;
180
181
        for (int i = 0; i < 2; i++)MachineId[i] = rand() % 90;
182
183
        for (int i = 0; i < 1; i++)Enet[i] = rand() % 90;
184
185
        for (int i = 0; i < 3; i++)ConsoleIndex[i] = rand() % 90;
186
187
        for (int i = 0; i < 3; i++)ConsoleKey[i] = rand() % 90;
188
189
        for (int i = 0; i < 2; i++)padding0[i] = rand() % 90;
190
191
        for (int i = 0; i < 8; i++)padding1[i] = rand() % 90;
192
193
        memcpy(Response + 0x2, &IPAddress, 2);
194
195
        memcpy(Response + 0x6, &MachineId, 2);
196
197
        memcpy(Response + 0x10, &Enet, 1);
198
199
        memcpy(Response + 0x29, &ConsoleKey, 3);
200
201
        memcpy(Response + 0x33, &ConsoleIndex, 3);
202
203
        memcpy(Response + 0x1C, &padding0, 2);
204
205
        memcpy(Response + 0x14, &padding1, 8);
206
207
}
208
209
 
210
211
void RandomizeData()
212
213
{
214
215
        srand((unsigned int)time(0));
216
217
        for (int i = 0; i < 4; i++) IPAddress[i] = rand() % 90;
218
219
        for (int i = 0; i < 8; i++) MachineId[i] = rand() % 90;
220
221
        for (int i = 0; i < 6; i++) Enet[i] = rand() % 90;
222
223
        for (int i = 0; i < 12; i++){
224
225
                ConsoleSerial[i] = rand() % 90;
226
227
                ConsoleIndex[i] = rand() % 90;
228
229
        }
230
231
}
232
233
inline DWORD GoldSpoofHook(DWORD dwUserIndex, XPRIVILEGE_TYPE PrivilegeType, PBOOL pfResult)
234
235
{
236
237
        if (PrivilegeType == XPRIVILEGE_TYPE::XPRIVILEGE_COMMUNICATIONS_FRIENDS_ONLY
238
239
                || PrivilegeType == XPRIVILEGE_TYPE::XPRIVILEGE_PROFILE_VIEWING_FRIENDS_ONLY
240
241
                || PrivilegeType == XPRIVILEGE_TYPE::XPRIVILEGE_USER_CREATED_CONTENT_FRIENDS_ONLY
242
243
                || PrivilegeType == XPRIVILEGE_TYPE::XPRIVILEGE_PRESENCE_FRIENDS_ONLY
244
245
                || PrivilegeType == XPRIVILEGE_TYPE::XPRIVILEGE_VIDEO_COMMUNICATIONS_FRIENDS_ONLY)
246
247
                *pfResult = FALSE;
248
249
        else
250
251
                *pfResult = TRUE;
252
253
 
254
255
        return 0;
256
257
}
258
259
 
260
261
unsigned long XeXGetModuleHandleHook(char* ModuleName)
262
263
{
264
265
        if (strcmp(ModuleName, "xbdm.xex") == 0)
266
267
                return 0;
268
269
}
270
271
 
272
273
int XNetXnAddrToMachineIdHook(XNCALLER_TYPE xnc, XNADDR  pxnaddr, unsigned long long MachineId)
274
275
{
276
277
        srand((unsigned int)time(0));
278
279
        MachineId = 0xFA00000000000000 | (0x2000000 | rand() % 0x7FFFFF);
280
281
        return 0;
282
283
}
284
285
unsigned long XeKeysGetKeyHook(unsigned short key, unsigned char* buffer, PDWORD len) //
286
287
{
288
289
        if (key == 0x14)
290
291
        {
292
293
                srand((unsigned int)time(0));
294
295
                for (int i = 0x00; i < 0xC; i++) buffer[i] = rand() % 0x7F;
296
297
                return 0L;
298
299
        }
300
301
        return XeKeysGetKey(key, buffer, len);
302
303
}
304
305
 
306
307
long XeKeysGetConsoleIDHook(unsigned char* buffer, int Unknown)
308
309
{
310
311
        srand((unsigned int)time(0));
312
313
        for (int i = 0x00; i < 0xC; i++) buffer[i] = rand() % 0x7F;
314
315
        return 0;
316
317
}
318
319
#endif