Skip to content

Commit 8426065

Browse files
committed
Update v0.19
1 parent d4fd8a1 commit 8426065

15 files changed

+289936
-13
lines changed

.DS_Store

0 Bytes
Binary file not shown.

README.md

+9-4
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ Unreal Engine 4 Dumper for Android Devices, Dump Lib libUE4.so from Memory of Ga
1919
- 2) Added 64bit Offsets to Fix 64bit Support
2020
- 3) Updated SDK Generation Method for Faster Dumping
2121
- 4) Short Options has been remove due to conflict with new options
22-
- v0.7: Fixed Object Dumping issue for PUBG CN(Tested on GP v1.8.10)
22+
- v0.7: Fixed Object Dumping issue for PUBG CN(Tested on GFP v1.8.10)
2323
- v0.8: Fixed 64bit Support for Latest PUBG Version
2424
- v0.9: Fixed Dumping issue with 64bit PUBG
2525
- v0.10:
26-
- 1) Added Option to View Actors of Main Level(Use new Option: --actors)
27-
- 2) Support for PUBG CN(GP) Fixed(Tested on GP v1.9.10)
26+
- 1) Added Option to Print Actors of Main Level(Use new Option: --actors)
27+
- 2) Support for PUBG CN(GFP) Fixed(Tested on GFP v1.9.10)
2828
- 3) Fixed Some Offsets Issues due to Modified UE4 Versions
2929
- 4) Offsets System Updated to Work with Other games, other then PUBG
3030
- v0.11: Fixed Dumping issue with 64bit PUBG Lite
@@ -50,6 +50,11 @@ Unreal Engine 4 Dumper for Android Devices, Dump Lib libUE4.so from Memory of Ga
5050
- v0.18:
5151
- 1) Fixed Dumping issue with 64bit PUBG CN
5252
- 2) Fixed Another Issue with String Dumping
53+
- v0.19:
54+
- 1) Fixed Object Dumping issue with PUBG CN
55+
- 2) Improved String Dumping Output
56+
- 3) Fixed Verbose Output Not Showing while String Dumping
57+
- 4) General Improvements to SDK Dumping
5358

5459
## Features
5560
- No need of Ptrace
@@ -78,7 +83,7 @@ Unreal Engine 4 Dumper for Android Devices, Dump Lib libUE4.so from Memory of Ga
7883
```
7984
./ue4dumper -h
8085
81-
UE4Dumper v0.18 <==> Made By KMODs(kp7742)
86+
UE4Dumper v0.19 <==> Made By KMODs(kp7742)
8287
Usage: ./ue4dumper <option(s)>
8388
Dump Lib libUE4.so from Memory of Game Process and Generate structure SDK for UE4 Engine
8489
Tested on PUBG Mobile Series and Other UE4 Based Games

SDKs/PUBGCN-SDK-1.16.13-32bit.txt

+102,463
Large diffs are not rendered by default.

SDKs/PUBGCN-SDK-1.16.13-64bit.txt

+103,745
Large diffs are not rendered by default.

SDKs/PUBGM-SDK-1.7.0-32bit.txt

+41,669
Large diffs are not rendered by default.

SDKs/PUBGM-SDK-1.7.0-64bit.txt

+42,012
Large diffs are not rendered by default.

jni/FNames.h

+7-3
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,13 @@ DumpBlocks423(ofstream &gname, uint32 &count, kaddr FNamePool, uint32 blockId, u
130130
}
131131

132132
if (isVerbose) {
133-
cout << (wide ? "Wide" : "") << dec << "{" << StrLength << "} [" << key << "]: " << str
133+
cout << (wide ? "Wide" : "") << dec << "{" << StrLength << "} " << hex
134+
<< "[" << key << "]: " << str
134135
<< endl;
135136
}
136137

137-
gname << "[" << key << "]: " << str << endl;
138+
gname << (wide ? "Wide" : "") << dec << "{" << StrLength << "} " << hex << "["
139+
<< key << "]: " << str << endl;
138140
count++;
139141
}
140142
} else {
@@ -159,7 +161,6 @@ void DumpStrings(string out) {
159161
cout << "Dumping Strings" << endl;
160162
clock_t begin = clock();
161163
if (isUE423) {
162-
//cout << "String Dump for UE4.23+ Not Supported Yet" << endl;//No Longer Needed
163164
kaddr FNamePool = getRealOffset(Offsets::GNames) + Offsets::GNamesToFNamePool;
164165

165166
uint32 BlockSize = Offsets::FNameStride * 65536;
@@ -179,6 +180,9 @@ void DumpStrings(string out) {
179180
string s = GetFNameFromID(i);
180181
if (!s.empty()) {
181182
gname << "[" << i << "]: " << s << endl;
183+
if (isVerbose) {
184+
cout << "[" << i << "]: " << s << endl;
185+
}
182186
count++;
183187
}
184188
}

jni/GUObjects.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ kaddr GetUObjectFromID(uint32 index) {
3030
getRealOffset(Offsets::GUObjectArray) + Offsets::FUObjectArrayToTUObjectArray);
3131
kaddr Chunk = getPtr(TUObjectArray + ((index / 0x10000) * Offsets::PointerSize));
3232

33-
return getPtr(Chunk + ((index % 0x10000) * Offsets::FUObjectItemSize));
33+
return getPtr(Chunk + Offsets::FUObjectItemPad + ((index % 0x10000) * Offsets::FUObjectItemSize));
3434
} else {
3535
kaddr FUObjectArray;
3636
if (deRefGUObjectArray) {

jni/Offsets.h

+18-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace Offsets {
99
kaddr GNames;
1010
kaddr GUObjectArray;
1111
kaddr PointerSize;
12+
kaddr FUObjectItemPad;
1213
kaddr FUObjectItemSize;
1314

1415
//---------SDK-----------//
@@ -82,6 +83,7 @@ namespace Offsets {
8283
void initOffsets_32() {
8384
//Global
8485
PointerSize = 0x4;
86+
FUObjectItemPad = 0x0;
8587
FUObjectItemSize = 0x10;
8688

8789
//---------SDK-----------
@@ -160,13 +162,16 @@ namespace Offsets {
160162
//Class: FNameEntry
161163
FNameEntryToNameString = 0xA;
162164
//Class: FUObjectArray
163-
FUObjectArrayToTUObjectArray = 0x8;
165+
FUObjectArrayToTUObjectArray = 0x70;
166+
//Class: TUObjectArray
167+
TUObjectArrayToNumElements = 0xC;
164168
}
165169
}
166170

167171
void initOffsets_64() {
168172
//Global
169173
PointerSize = 0x8;
174+
FUObjectItemPad = 0x0;
170175
FUObjectItemSize = 0x18;
171176

172177
//---------SDK-----------
@@ -254,11 +259,22 @@ namespace Offsets {
254259
//Class: FNameEntry
255260
FNameEntryToNameString = 0xE;
256261
//Class: FUObjectArray
257-
FUObjectArrayToTUObjectArray = 0x8;
262+
FUObjectArrayToTUObjectArray = 0xB0;
263+
//Class: TUObjectArray
264+
TUObjectArrayToNumElements = 0x14;
258265
//Class: ULevel
259266
ULevelToAActors = 0xA0;
260267
ULevelToAActorsCount = 0xA8;
261268
}
269+
if(isPUBGNewState()){
270+
FUObjectItemPad = 0x10;
271+
//Class: FNamePool
272+
GNamesToFNamePool = 0x34E0;
273+
//Class: FUObjectArray
274+
FUObjectArrayToTUObjectArray = 0x0;
275+
//Class: TUObjectArray
276+
TUObjectArrayToNumElements = 0xC;
277+
}
262278
if (isARKSurvival()) {
263279
//Class: UWorld
264280
UWorldToPersistentLevel = 0x58;

jni/SDK.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -565,12 +565,12 @@ void writeStruct(ofstream &sdk, kaddr clazz) {
565565
kaddr currStruct = clazz;
566566
while (UStruct::isValid(currStruct)) {
567567
string name = UObject::getName(currStruct);
568-
if (isEqual(name, "None")) {
568+
if (isEqual(name, "None") || isContain(name, "_png") || name.empty()) {
569569
break;
570570
}
571571

572572
uint32 NameID = UObject::getNameID(currStruct);
573-
if (!isScanned(NameID) && !name.empty()) {
573+
if (!isScanned(NameID)) {
574574
//Verbose Output
575575
if (isVerbose) {
576576
cout << "Name: " << name << endl;

jni/kmods.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const struct option long_options[] = {
2828
};
2929

3030
void Usage() {
31-
printf("UE4Dumper v0.18 <==> Made By KMODs(kp7742)\n");
31+
printf("UE4Dumper v0.19 <==> Made By KMODs(kp7742)\n");
3232
printf("Usage: ./ue4dumper <option(s)>\n");
3333
printf("Dump Lib libUE4.so from Memory of Game Process and Generate structure SDK for UE4 Engine\n");
3434
printf("Tested on PUBG Mobile Series and Other UE4 Based Games\n");
@@ -160,6 +160,9 @@ int main(int argc, char *argv[]) {
160160
Offsets::patchCustom_32();
161161
#endif
162162

163+
isPGLite = isPUBGLite();
164+
isPUBGNS = isPUBGNewState();
165+
163166
if (!isValidArg ||
164167
(!isLibDump && !isObjsDump && !isStrDump && !isSdkDump && !isSdkDump2 && !isActorDump)) {
165168
printf("Wrong Arguments, Please Check!!\n");

jni/kmods.h

+6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
#endif
3232

3333
bool isUE423 = false;
34+
bool isPUBGNS = false;
35+
bool isPGLite = false;
3436
bool isVerbose = false;
3537
bool deRefGNames = true;
3638
bool deRefGUObjectArray = false;
@@ -81,6 +83,10 @@ bool isARKSurvival() {
8183
return isEqual(pkg, "com.studiowildcard.wardrumstudios.ark");
8284
}
8385

86+
bool isPUBGNewState() {
87+
return isEqual(pkg, "com.pubg.newstate") || isEqual(pkg, "com.pubg.newstate.beta");
88+
}
89+
8490
bool isGameOfPeace() {
8591
return isEqual(pkg, "com.tencent.tmgp.pubgmhd");
8692
}

libs/.DS_Store

0 Bytes
Binary file not shown.

libs/arm64-v8a/ue4dumper64

928 Bytes
Binary file not shown.

libs/armeabi-v7a/ue4dumper

960 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)