PS3 PS3MAPI and me; Converting full mem dump offsets to virtual?

Question : How can I convert a file offset from a full mem ram dump (created with webman-mod) to a virtual/program ram address and write to it?

Further details below for those interested:

Here's the situation : I have found the memory address I'm looking for, but ONLY in the full mem dump available through webman-mod (which uses lv1_peek, which I can't access through ps3mapi or the webman-mod connect command codes - right?)

The trouble is now that I know the static address (I assume physical/actual) in the full dump - I can't find it in the relative addresses I get through the process_pid based ps3mapi get command :(. The value found at the static address (the presumed game variable) is in standard hex and NOT in big endian format - does anyone know if that is common/normal?

*EDIT* - The static address WAS in big endian format, I had become confused :( I have seen at least one example, from bungholio, where the pointer address WAS in little endian - so watch out for that, but the cell IS big endian and all values that are not converted (which the cell has optimized functions to do) will be human readable left to right as a result.

It is not in the 3x to 4x range, that I can discern anyhow (it would have to be stored in a different form or perhaps the 3x-4x range while attached to the eboot is not the one I want?).

Can anyone please help me with this or point me in the right direction?

Thanks in advance! I'm flummoxed.
 
Last edited:
Update: I think I've solved my own problem.

There was no way I could find to do what I suggested above (please let me know if you know otherwise!) - ie. convert from a full ram dump offset to a program based ram address (that you would use with CCAPI / PS3MAPI)and/or write directly to that address in memory, at least on a CEX console (without modifying PS3MAPI and WEBMAN-MOD). DEX presumably would have direct access to the calls required.

What I ended up doing to find the address was to dump the ram range of 0x0 to 0x40000000 (thanks @bungholio) and finally found the address I was looking for. It was again WAS in big endian format, but then again the PS3 only has 256 mb of cpu ram and 0x0 to 0x40000000 is 1GB...

Clearly these are virtual programid based ram addresses, but there is still too much data for the PS3 ram (256 for cpu and 256 for gpu, 512 total) in them However, even the "full" mem dump from webman-mod does not contain the variable in big endian format, so I don't know if it is a game specific/implementation thing or what. Any help or clarification would be greatly appreciated!

Edit : I have since converted the addresses into pointer in pointer codes (one depth level found nothing, I needed 2), and the pointer in pointer (both the first and second) I am using once again has the address in big endian format (not little endian, as I know the PS3 is.NOT - so this is NOT surprising as I had originally mistaken..). I know that ps3 games do sometimes have the pointer map in little endian, but I guess it depends on the specific game/implementation.
 
Last edited:
Back
Top