Skip to content

Commit 621eba1

Browse files
committed
Update v0.18
1 parent 3f89d7c commit 621eba1

14 files changed

+164640
-15
lines changed

.DS_Store

0 Bytes
Binary file not shown.

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ Unreal Engine 4 Dumper for Android Devices, Dump Lib libUE4.so from Memory of Ga
4747
- v0.17:
4848
- 1) Fixed Crash with Deref Options
4949
- 2) Fixed Issue with Wide String Dumping
50+
- v0.18:
51+
- 1) Fixed Dumping issue with 64bit PUBG CN
52+
- 2) Fixed Another Issue with String Dumping
5053

5154
## Features
5255
- No need of Ptrace
@@ -75,7 +78,7 @@ Unreal Engine 4 Dumper for Android Devices, Dump Lib libUE4.so from Memory of Ga
7578
```
7679
./ue4dumper -h
7780
78-
UE4Dumper v0.17 <==> Made By KMODs(kp7742)
81+
UE4Dumper v0.18 <==> Made By KMODs(kp7742)
7982
Usage: ./ue4dumper <option(s)>
8083
Dump Lib libUE4.so from Memory of Game Process and Generate structure SDK for UE4 Engine
8184
Tested on PUBG Mobile Series and Other UE4 Based Games

SDKs/.DS_Store

0 Bytes
Binary file not shown.

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

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

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

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

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

+40,800
Large diffs are not rendered by default.

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

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

jni/FNames.h

+2-8
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@ struct WideStr {
5555
}
5656
};
5757

58-
string getUEString(kaddr address) {
59-
string uestring(ReadStr(address, MAX_SIZE));
60-
uestring.shrink_to_fit();
61-
return uestring;
62-
}
63-
6458
string GetFNameFromID(uint32 index) {
6559
if (isUE423) {
6660
uint32 Block = index >> 16;
@@ -95,15 +89,15 @@ string GetFNameFromID(uint32 index) {
9589
TNameEntryArray + ((index / 0x4000) * Offsets::PointerSize));
9690
kaddr FNameEntry = getPtr(FNameEntryArr + ((index % 0x4000) * Offsets::PointerSize));
9791

98-
return getUEString(FNameEntry + Offsets::FNameEntryToNameString);
92+
return ReadStr(FNameEntry + Offsets::FNameEntryToNameString, MAX_SIZE);
9993
} else {
10094
kaddr TNameEntryArray = getRealOffset(Offsets::GNames);
10195

10296
kaddr FNameEntryArr = getPtr(
10397
TNameEntryArray + ((index / 0x4000) * Offsets::PointerSize));
10498
kaddr FNameEntry = getPtr(FNameEntryArr + ((index % 0x4000) * Offsets::PointerSize));
10599

106-
return getUEString(FNameEntry + Offsets::FNameEntryToNameString);
100+
return ReadStr(FNameEntry + Offsets::FNameEntryToNameString, MAX_SIZE);
107101
}
108102
}
109103
}

jni/Mem.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,24 @@ T *ReadArr(kaddr address, unsigned int size) {
133133
return ptr;
134134
}
135135

136-
char *ReadStr(kaddr address, unsigned int size) {
136+
string ReadStr(kaddr address, unsigned int size) {
137137
char *data = new char[size];
138138
memset(data, '\0', size);
139+
139140
for (int i = 0; i < size; i++) {
140-
vm_readv(reinterpret_cast<void *>(address + (sizeof(char) * i)),
141-
reinterpret_cast<void *>(data + i), sizeof(char));
141+
vm_readv((void*)(address + (sizeof(char) * i)), (void*)(&data[0] + i), sizeof(char));
142142
if (data[i] == 0x0) {
143143
break;
144144
}
145145
}
146-
return data;
146+
147+
string name(data);
148+
name.shrink_to_fit();
149+
return name;
147150
}
148151

149152
string ReadStr2(kaddr address, unsigned int size) {
150-
string name("\0", size);
153+
string name(size, '\0');
151154
vm_readv((void *) address, (void *) name.data(), size * sizeof(char));
152155
name.shrink_to_fit();
153156
return name;

jni/Offsets.h

+4
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ namespace Offsets {
157157

158158
void patchCustom_32() {
159159
if (isGameOfPeace()) {
160+
//Class: FNameEntry
161+
FNameEntryToNameString = 0xA;
160162
//Class: FUObjectArray
161163
FUObjectArrayToTUObjectArray = 0x8;
162164
}
@@ -249,6 +251,8 @@ namespace Offsets {
249251
ULevelToAActorsCount = 0xA8;
250252
}
251253
if (isGameOfPeace()) {
254+
//Class: FNameEntry
255+
FNameEntryToNameString = 0xE;
252256
//Class: FUObjectArray
253257
FUObjectArrayToTUObjectArray = 0x8;
254258
//Class: ULevel

jni/kmods.cpp

+1-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.17 <==> Made By KMODs(kp7742)\n");
31+
printf("UE4Dumper v0.18 <==> 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");

libs/.DS_Store

0 Bytes
Binary file not shown.

libs/arm64-v8a/ue4dumper64

16 Bytes
Binary file not shown.

libs/armeabi-v7a/ue4dumper

-48 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)