Skip to content

Commit 6b8c844

Browse files
committed
Create How_can_i_find_view_matrix_pattern.md
1 parent b9a008e commit 6b8c844

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

How_can_i_find_view_matrix_pattern.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# How Can I Find Pubg Mobile View Matrix Pattern
2+
3+
4+
5+
**[Youtube Video](https://www.youtube.com/watch?v=TdqjFMIQ_Fs)**
6+
[![PUBG ESP EXAMPLE SCREENSHOT](https://raw.githubusercontent.com/atiksoftware/pubg_mobile_memory_hacking_examples/master/screens/How%20Can%20I%20Find%20Pubg%20Mobile%20Gameloop%20ViewMatrix%20Pattern.png)](https://www.youtube.com/watch?v=TdqjFMIQ_Fs)
7+
8+
- Join to Training.
9+
- Take a sniper, and get 8x scoop.
10+
- Go to there as in video
11+
- Zoom to tareget center (150m)
12+
13+
viewmatrix 4x4 16 float. its 16*4 64Byte
14+
if you zoom to this target with 8x scoop.
15+
your view matrix some like this.
16+
```
17+
-12.0 <-> -12.0
18+
-0.012 <-> 0.012
19+
0.0
20+
0.092 <-> 0.102
21+
0.900 <-> 1.100
22+
-0.100 <-> 0.100
23+
0
24+
0.990 <-> 0.999
25+
0
26+
18.0 <-> 19.0
27+
0
28+
-0.007 <-> 0.007
29+
1000000.0 <-> 8000000.0 || 1 == 1
30+
-30000.0 <-> -10000.0
31+
3
32+
-80000.0 <-> -10000.0 || 1 == 1
33+
```
34+
---
35+
36+
## Find viewmatrix base
37+
```C++
38+
loadRegions(0x340F4E00, 0x5F9CFEB0);
39+
40+
float _f;
41+
42+
DWORD foundedVMPath = 0;
43+
//for(int r = 0; r < memSectorIndex; r++){
44+
for(int r = 0; r < memSectorIndex; r++){
45+
std::cout << termcolor::blue << " region: " << (r + 1) << "/" << memSectorIndex << " base: " << termcolor::cyan << "0x" << std::hex << memSectorList[r].dwBaseAddr << termcolor::reset << " size: " << std::dec << memSectorList[r].dwMemorySize << "\n";
46+
47+
MEMORY_REGION region = memSectorList[r];
48+
DWORD base = region.dwBaseAddr;
49+
int size = region.dwMemorySize;
50+
loadBuffer(base, size);
51+
52+
for(int i = 0; i < size - 4; i+=4){
53+
_f = flook( i);
54+
if( _f > -11.0f && _f < -10.0f){ // 10
55+
_f = flook( i + 4);
56+
if( _f > -0.012 && _f < 0.012){ // 11
57+
_f = flook( i + 8);
58+
if(flook( i + 8) == 0.0f){ // 12
59+
_f = flook( i + 12);
60+
if(_f > 0.092f && _f < 0.102f){ // 13
61+
_f = flook( i + 16);
62+
if(_f > 0.900f && _f < 1.100f){ // 14
63+
_f = flook( i + 20);
64+
if(_f > -0.100f && _f < 0.100f){ // 15
65+
_f = flook( i + 24);
66+
if(_f == 0.0f){ // 16
67+
_f = flook( i + 28);
68+
if(_f > 0.990f && _f < 0.999f){ // 17
69+
_f = flook( i + 32);
70+
if(_f != 0.0f || 1 == 1){ // 18 - unknown
71+
_f = flook( i + 36);
72+
if(_f > 18.0f && _f < 19.0f){ // 19
73+
_f = flook( i + 40);
74+
if(_f == 0.0f){ // 20
75+
_f = flook( i + 44);
76+
if(_f > -0.007f && _f < 0.007f){ // 21
77+
_f = flook( i + 48);
78+
if(_f > 10000.0f && _f < 8000000.0f || 1 == 1){ // 22 - unknown
79+
_f = flook( i + 52);
80+
if(_f > -30000.0f && _f < -10000.0f){ // 23
81+
_f = flook( i + 56);
82+
if(_f == 3.0f){ // 24
83+
_f = flook( i + 60);
84+
if(_f > -800000.0f && _f < -100000.0f || 1 == 1){ // 25 - unknown
85+
if(flook(i + 64) == 0.0f && flook(i + 68) == 0.0f && flook(i + 72) == 0.0f){ // END + 12byte
86+
std::cout << "Found : " << std::hex << base + i << std::dec << "\n";
87+
foundedVMPath = base + i;
88+
r = memSectorIndex;
89+
int ax = 22;
90+
}
91+
}
92+
}
93+
}
94+
}
95+
}
96+
}
97+
}
98+
}
99+
}
100+
}
101+
}
102+
}
103+
}
104+
}
105+
}
106+
}
107+
}
108+
}
109+
```
110+
111+
112+
113+
## Find Which Pointers Goint To ViewMatrix
114+
115+
```C++
116+
loadRegions(0x26000000, 0x30000000);
117+
DWORD _1, _2, _3;
118+
for(int r = 0; r < memSectorIndex; r++){
119+
std::cout << termcolor::blue << " region: " << (r+1) << "/" << memSectorIndex << " base: " << termcolor::cyan << "0x" << std::hex << memSectorList[r].dwBaseAddr << termcolor::reset << " size: " << std::dec << memSectorList[r].dwMemorySize << "\n";
120+
MEMORY_REGION region = memSectorList[r];
121+
DWORD base = region.dwBaseAddr;
122+
int size = region.dwMemorySize;
123+
loadBuffer(base, size);
124+
for(int i = 0; i < size - 4; i += 4){
125+
_1 = dlook(i);
126+
if(_1 > 0x2C8475E0 && _1 < 0x5C8475E0){
127+
for(int g = 0; g < 200; g += 4){
128+
_2 = dread(_1 + g);
129+
if(_2 > 0x2C8475E0){
130+
for(int h = 0; h < 1024; h += 4){
131+
if(_2 + h == foundedVMPath){
132+
std::cout << termcolor::green;
133+
std::cout << "Found Base: ";
134+
std::cout << termcolor::red;
135+
logHex((base + i));
136+
std::cout << termcolor::reset;
137+
std::cout << " >";
138+
std::cout << termcolor::red;
139+
std::cout << " +0x";
140+
logHex(g);
141+
std::cout << termcolor::reset;
142+
std::cout << " >";
143+
std::cout << termcolor::red;
144+
std::cout << " +0x";
145+
logHex(h);
146+
std::cout << termcolor::reset;
147+
logStr("\n");
148+
std::cout << termcolor::reset;
149+
std::string xxx;
150+
std::cin >> xxx;
151+
}
152+
}
153+
}
154+
}
155+
}
156+
}
157+
}
158+
```

0 commit comments

Comments
 (0)