Skip to content

Commit 9036b37

Browse files
committed
Update v0.8
1 parent bb08707 commit 9036b37

10 files changed

+161890
-12
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Dump Lib libUE4.so from Memory of Game Process and Generate Structure SDK of Sup
1616
3) Updated SDK Generation Method for Faster Dumping
1717
4) Short Options has been remove due to conflict with new options
1818
- v0.7: Fixed Object Dumping issue for PUBG CN(As of Now Tested on GP v1.8.10.8640).
19+
- v0.8: Fixed 64bit Support for Latest PUBG Version
1920

2021
## Features
2122
- No need of Ptrace
@@ -43,7 +44,7 @@ Dump Lib libUE4.so from Memory of Game Process and Generate Structure SDK of Sup
4344
```
4445
./ue4dumper -h
4546
46-
UE4Dumper v0.7 <==> Made By KMODs(kp7742)
47+
UE4Dumper v0.8 <==> Made By KMODs(kp7742)
4748
Usage: ue4dumper <option(s)>
4849
Dump Lib libUE4.so from Memory of Game Process and Generate structure SDK for UE4 Engine
4950
Tested on PUBG Mobile Series

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

+81,069
Large diffs are not rendered by default.

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

+80,809
Large diffs are not rendered by default.

jni/GUObjects.h

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

29-
return getPtr(Chunk + ((index % 0x10000) * Offsets::FUObjectItemSizeNew));
29+
return getPtr(Chunk + ((index % 0x10000) * Offsets::FUObjectItemSize));
3030
} else {
3131
if(isEqual(pkg, "com.tencent.tmgp.pubgmhd")){
3232
kaddr FUObjectArray = getRealOffset(Offsets::GUObjectArray);

jni/Offsets.h

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ namespace Offsets {
1212
//Global
1313
PointerSize = 0x4,
1414
FUObjectItemSize = 0x10,
15-
FUObjectItemSizeNew = 0x14,
1615

1716
//---------SDK-----------
1817
//Class: FNameEntry

jni/Offsets64.h

+5-6
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ namespace Offsets {
1111
enum Offsets {
1212
//Global
1313
PointerSize = 0x8,
14-
FUObjectItemSize = 0x14,
15-
FUObjectItemSizeNew = 0x18,
14+
FUObjectItemSize = 0x18,
1615

1716
//---------SDK-----------
1817
//Class: FNameEntry
@@ -26,15 +25,15 @@ namespace Offsets {
2625
UObjectToInternalIndex = 0xC,
2726
UObjectToClassPrivate = 0x10,
2827
UObjectToFNameIndex = 0x18,
29-
UObjectToOuterPrivate = 0x18,
28+
UObjectToOuterPrivate = 0x20,
3029
//Class: UField
3130
UFieldToNext = 0x28,
3231
//Class: UStruct
3332
UStructToSuperStruct = 0x30,
3433
UStructToChildren = 0x38,
3534
//Class: UFunction
3635
UFunctionToFunctionFlags = 0x88,
37-
UFunctionToFunc = 0xAC,
36+
UFunctionToFunc = 0xB0,
3837
//Class: UProperty
3938
UPropertyToElementSize = 0x34,
4039
UPropertyToPropertyFlags = 0x38,
@@ -62,8 +61,8 @@ namespace Offsets {
6261
//Class: UWorld
6362
UWorldToPersistentLevel = 0x30,
6463
//Class: ULevel
65-
ULevelToAActors = 0x98,
66-
ULevelToAActorsCount = 0xA0,
64+
ULevelToAActors = 0xA0,
65+
ULevelToAActorsCount = 0xA8,
6766
};
6867
}
6968

jni/SDK.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ void DumpSDKW(string out) {
372372
cout << "Dumping SDK List" << endl;
373373
clock_t begin = clock();
374374
kaddr gworld = getPtr(getRealOffset(Offsets::GWorld));
375+
cout << "UWorld: " << setbase(16) << gworld << setbase(10) << " | Name: " << UObject::getName(gworld) << endl;
375376
if (UObject::isValid(gworld)) {
376377
//Iterate World
377378
writeStruct(sdk, UObject::getClass(gworld));
@@ -380,7 +381,7 @@ void DumpSDKW(string out) {
380381
kaddr actorList = getPtr(level + Offsets::ULevelToAActors);
381382
int actorsCount = Read<int>(level + Offsets::ULevelToAActorsCount);
382383
for (int i = 0; i < actorsCount; i++) {
383-
kaddr actor = getPtr(actorList + (i * sizeof(kaddr)));
384+
kaddr actor = getPtr(actorList + (i * Offsets::PointerSize));
384385
if (UObject::isValid(actor)) {
385386
writeStruct(sdk, UObject::getClass(actor));
386387
}
@@ -404,7 +405,7 @@ void TestDump(kaddr uobj){
404405
while (child) {
405406
cout << setbase(16) << child << " " << UObject::getName(child) << " " << UStruct::getClassName(child) << ";" << endl;
406407

407-
HexDump(child, 30);
408+
//HexDump(child, 30);
408409

409410
child = UField::getNext(child);
410411
}

jni/kmods.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const struct option long_options[] = {
2323
};
2424

2525
void Usage() {
26-
printf("UE4Dumper v0.7 <==> Made By KMODs(kp7742)\n");
26+
printf("UE4Dumper v0.8 <==> Made By KMODs(kp7742)\n");
2727
printf("Usage: ue4dumper <option(s)>\n");
2828
printf("Dump Lib libUE4.so from Memory of Game Process and Generate structure SDK for UE4 Engine\n");
2929
printf("Tested on PUBG Mobile Series\n");

libs/arm64-v8a/ue4dumper

0 Bytes
Binary file not shown.

libs/armeabi-v7a/ue4dumper

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)