BullyWiiPlaza / Universal-Pointer-Searcher

An application for finding memory pointers
Apache License 2.0
24 stars 1 forks source link

Does the "Target address outside of memory dump bounds" input validation even make sense? #14

Open Urahara3000 opened 4 years ago

Urahara3000 commented 4 years ago

I noticed here that some games of Cemu and RPCS3 use Base Pointer from the beginning of the memory, example:

in the Bleach game of RPCS3 I find the temporary health address at (33B2A0506)

and its Base Pointer is at the beginning of the memory (30073D354)

3(3B2A0506) and its Base Pointer in 3(0073D354)

however, to achieve this result, I had to generate dumps of 1 GB in size, because 00000000 up to 40000000 is 1 GB in size

now my question comes, is there a possibility to use a smaller dump, with 256 MB ?

there is the possibility to search for address 33B2A0506 only in the first memory block of RPCS3 (00000000-10000000), without the possibility of giving the error (Target Address outside of Memory Dump Bounds) ?

if that possibility exists it would be wonderful for these emulators, stay with God and see you next time !

BullyWiiPlaza commented 4 years ago

there is the possibility to search for address 33B2A0506 only in the first memory block of RPCS3 (00000000-10000000), without the possibility of giving the error (Target Address outside of Memory Dump Bounds) ?

I just realized this restriction I placed doesn't make a lot of sense. Thanks for pointing it out. I can remove it soon after I got time for the change and also to test if nothing else breaks.

Urahara3000 commented 4 years ago

Oh, what excellent news, I’m hoping this possibility will work out, this option will help a lot in Cemu and RPCS3 emulators, because these consoles use a very large amount of RAM, and some Base Pointers can hide in any memory block, no need to hurry, I can wait as long as it takes to implement this extra feature, because, in my view, this will be one of the most important resources of this program, stay with God and until next time my friend !

Urahara3000 commented 3 years ago

Hello my friend, I would just like you to remove the check that leads to the error (Target Address outside of Memory Dump Bounds), I would very much like to do a test here without this check, just remove the check, I ask please, right now I thank you ok.

BullyWiiPlaza commented 3 years ago

Hello, I removed the check now but I'm not sure if it even find pointers. Let me know how it goes.

Urahara3000 commented 2 years ago

Hello, I removed the check now but I'm not sure if it even find pointers. Let me know how it goes.

Hello my friend, sorry for the delay in replying, many things happened here, I did the test without the check in the RPCS3 Castle of Illusion Starring Mickey Mouse game, unfortunately it didn't work, you were correct, it doesn't return any pointers, but if there isn't a way to make it work, that's fine, I managed to buy a more powerful PC now, this time I have 32GB of RAM, however, now there is another problem, I can't perform Scans on Dumpers that have 2GB in size, 2GB upwards, is there a way to scan Dumpers that have 2 GB or more ?

BullyWiiPlaza commented 2 years ago

@Urahara3000 Which error or problem do you run into with the 2 GB limit? Maybe you're using a 32-bit version of Java.

Urahara3000 commented 2 years ago

@Urahara3000 Which error or problem do you run into with the 2 GB limit? Maybe you're using a 32-bit version of Java.

The error is that when I generate 2 GB Dumps, the scan never returns anything, even using just one Dump

I think this must be the problem, could you put the x64 version of Java link here?

i will install it and run another test soon.

BullyWiiPlaza commented 2 years ago

@Urahara3000 Ok, go to https://www.java.com/en/download/manual.jsp and scroll down for "Windows Offline (64-bit)" and install this.

Also, please upload the dumps for me and tell me the steps to take (e.g. settings) and which result you get and the result you expect with it. That makes it much easier to understand and possibly fix the problem.

Urahara3000 commented 2 years ago

@Urahara3000 Ok, go to https://www.java.com/en/download/manual.jsp and scroll down for "Windows Offline (64-bit)" and install this.

Also, please upload the dumps for me and tell me the steps to take (e.g. settings) and which result you get and the result you expect with it. That makes it much easier to understand and possibly fix the problem.

Apologies for the delay, I was out of the house, fine, I'll explain the whole situation, In the Xbox 360 Banjo-Tooie game running on the Xenia emulator, the address of the Levitate function starts from the beginning of memory, however, the base address of this function's static route is somewhere between 80000000 and 9000000, so I make the configuration to generate the Dump in the range 00001000 to 9000000, this range has a total size of 2.25 GB, even though I was generating only one memory dump with this size of 2.25 GB, Scan cannot return any results in the list, and I've already installed x64 Java Runtime, so Universal Pointer Searcher may have a maximum file size limit per Dump parsed, Below are the settings I used in the scan:

https://i.imgur.com/aBM8tfB.png

https://i.imgur.com/LsCKLFq.png

Below is the Dump used in the Scan:

https://tinyurl.com/xhtsy3ss

I will be very grateful if you can remove this Dump size limit, stay with God and until next time.

BullyWiiPlaza commented 2 years ago

@Urahara3000 Hi, my Debugging Output says

--file-path: Path does not exist: D:\...\Universal-Pointer-Searcher\dumps\Banjo-Tooie\001C5A68.bin
Run with --help for more information.

This shouldn't happen and might be a bug. :( It is not related to the memory dump file size though.

What does yours say?

Another attempt but with the Universal Pointer Searcher Engine:

>UniversalPointerSearcher.exe --initial-file-path "D:\...\Universal-Pointer-Searcher\dumps\Banjo-Tooie\001C5A68.bin" --initial-starting-address 0x1000 --address-size 4 --endian big --target-address 0x1C5A68 --store-memory-pointers-file-path Pointers.txt

This works and we get pointer results: Pointers.txt

So there you have it. There is no file size limit at all, it can be as big as you want (and your PC supports RAM-wise). Please consider using the Universal Pointer Searcher Engine. It's more advanced and better tested than the Universal Pointer Searcher Java GUI application.

Urahara3000 commented 2 years ago

@Urahara3000 Hi, my Debugging Output says

--file-path: Path does not exist: D:\...\Universal-Pointer-Searcher\dumps\Banjo-Tooie\001C5A68.bin
Run with --help for more information.

This shouldn't happen and might be a bug. :( It is not related to the memory dump file size though.

What does yours say?

Another attempt but with the Universal Pointer Searcher Engine:

>UniversalPointerSearcher.exe --initial-file-path "D:\...\Universal-Pointer-Searcher\dumps\Banjo-Tooie\001C5A68.bin" --initial-starting-address 0x1000 --address-size 4 --endian big --target-address 0x1C5A68 --store-memory-pointers-file-path Pointers.txt

This works and we get pointer results: Pointers.txt

So there you have it. There is no file size limit at all, it can be as big as you want (and your PC supports RAM-wise). Please consider using the Universal Pointer Searcher Engine. It's more advanced and better tested than the Universal Pointer Searcher Java GUI application.

I did the test using Universal Pointer Searcher in Java, I can't tell if this message appears, because I only see the GUI screen in java, the only thing that happens is this, it doesn't return anything in the search, as you said, it could be a bug, I don't know if it has any relation to a possible size limit per Dump, I had done the same test before with the new version of Universal Pointer Searcher, and it worked, it doesn't have that size limit or bug, however, it would be really cool if his Java version didn't have this limit as well, because I really liked the Java version with GUI, I can use it quickly, she suits me very well in all scenarios, but if you do not want or are no longer interested in making changes to this Java version of it, I will understand, there comes a time when we get tired of modifying old programs, but to this day, I am very grateful to you for creating this wonderful program, which helped me and it helps a lot until today, I wish you all the best my friend, again thank you very much for the Universal Pointer Searcher GUI with Java, stay with God and until next time.

BullyWiiPlaza commented 2 years ago

@Urahara3000 You can view the Debugging Output yourself by clicking here: image

Also, the native pointer searcher EXE has been replaced by the Universal Pointer Searcher Engine (see the other repository) so the old version of it cannot be updated anymore to fix the issue. The issue is related to the old version only. The new version works fine but it cannot be integrated into the Java GUI right now since it has changed too much. Currently, I do not want to re-work the whole GUI of the Universal Pointer Searcher to integrate the newest version of the engine. The command line version can be used fully with a few minutes of learning and checking out the examples in the README.

Urahara3000 commented 2 years ago

@Urahara3000 You can view the Debugging Output yourself by clicking here: image

Also, the native pointer searcher EXE has been replaced by the Universal Pointer Searcher Engine (see the other repository) so the old version of it cannot be updated anymore to fix the issue. The issue is related to the old version only. The new version works fine but it cannot be integrated into the Java GUI right now since it has changed too much. Currently, I do not want to re-work the whole GUI of the Universal Pointer Searcher to integrate the newest version of the engine. The command line version can be used fully with a few minutes of learning and checking out the examples in the README.

Hello my friend, I saw that you asked me to show you the Debugging Output of the Scan that I do here with Dumps above 2 GB, I did a scan today of 2.50 GB of the Xbox 360 game Fable 2 (GOTY), this time I will show you the images of my basic configuration of Scan and Debugging Output, then you tell me your answer ok.

https://i.imgur.com/cYFW97j.png

https://i.imgur.com/vzVOaH8.png

Debugging Output:

https://i.imgur.com/CrM8n7m.png

BullyWiiPlaza commented 2 years ago

@Urahara3000 Hello again friend, you can see the error being "Path does not exist". Please make sure E:\42668024.bin is the right file path.

Urahara3000 commented 2 years ago

@Urahara3000 Hello again friend, you can see the error being "Path does not exist". Please make sure E:\42668024.bin is the right file path.

Hello again my friend, this is strange, when I scan the same dump in the same folder with up to 1.99 GB the scan works normally, I'm going to show here two Scans made with 2 different dumps using the same Health memory address, one with 1.99 GB and the other with 2.50 GB

Dump with 1.99 GB:

https://i.imgur.com/DuHWMn7.png

https://i.imgur.com/8yEgsJ5.png

https://i.imgur.com/KB5nikg.png

Dump with 2.50 GB:

https://i.imgur.com/Vq8pYdZ.png

https://i.imgur.com/UM4oEWc.png

https://i.imgur.com/FpDE73F.png

Link containing the 1.99 GB Dump:

https://tinyurl.com/4zup99je

Link containing the 2.50 GB Dump:

https://tinyurl.com/mw2bfjc7

I think the error may be the type of variable that carries the Size value, maybe it is like (Integer), and the Integer limit is 7FFFFFFF and this is precisely the maximum size of a Dump that the program can perform the Scan, if this variable is of type (UInteger) its maximum size increases to FFFFFFFF, with this the maximum size of the Dump could increase to up to 3.99 GB, I don't know if the problem is really this, but this is just my theory, in case you want to take a test there later, the Dumps are above, have a great night and God bless you !

BullyWiiPlaza commented 2 years ago

Hi friend @Urahara3000, I have been updating and redesigning the Universal Pointer Searcher GUI to use the new Universal Pointer Searcher Engine. Thanks for the detailed information regarding the issue, it seems to make sense that there is an integer limitation issue which could be solved quite easily by using a bigger datatype (e.g. long). I will see when I get back to working on this. I'll consider what you said in the next big release/update.

Urahara3000 commented 1 year ago

Hi friend @Urahara3000, I have been updating and redesigning the Universal Pointer Searcher GUI to use the new Universal Pointer Searcher Engine. Thanks for the detailed information regarding the issue, it seems to make sense that there is an integer limitation issue which could be solved quite easily by using a bigger datatype (e.g. long). I will see when I get back to working on this. I'll consider what you said in the next big release/update.

Hi friend, sorry for the delay in replying, I am very happy that you have a solution for this problem, yes, using bigger datatype (e.g. long) could easily solve the problem, I am also very happy that you are updating and redesigning the Universal Pointer Searcher GUI, great news for me, I hope everything goes well in this process, have a great night and God bless you !

Urahara3000 commented 1 year ago

Hello my friend, I just watched your new video showing the new version of Universal Pointer Searcher 4.1, I want to say that you did an excellent job on this update, it looks amazing, I loved the new option called (Pointer Address Ranges), this option helps a lot in emulators, if this new version manages to analyze memory dumps with more than 2 GB it is even better, above 2 GB helps a lot in Xbox 360 games by Xenia, I am now waiting for the release of this new version, a big hug for you and may God bless you and your whole family.

BullyWiiPlaza commented 1 year ago

@Urahara3000 Ah, you're still active. You're welcome buddy, I hope it covers all needs. Your feedback is very important to me as one of the most active users of the Universal Pointer Searcher app. When it's updated, feel free to share your thoughts and potential bugs you may find. Of course it supports reading 2 GB or bigger memory dumps. I'm not sure where this limit comes from but the pointer searcher process is 64-bit, meaning it can basically load files with unlimited sizes and process them. I definitely do not limit file sizes for no reason like that if your PC has enough RAM. Make sure your Java is also 64-bit.

BullyWiiPlaza commented 12 months ago

Hi @Urahara3000, I wanted to inform you that the new program version is now available, feel free to check it out. If this issue is solved, I will close it after your confirmation.

Banjo-Tooie-001C5A68-Pointers.txt Fable 2 (Gothy) 4276FA34-Pointers.txt