(Guide) How To Make A Custom Auto *Anything* Installer

Hi guys, thanx for the tool, really usefull
1- is there any way to avoid the "reset" al the end of the installation ? (maybe a: just "O" to back to the menu)
2- can we install a hen with full support ("hybrid menu") in 'one-step', instead of two phases? (install package for pkg w/full features)
3- I can install files with this method, but hen, I tried the unofficial with full features but dont it doesn't work.
thanx guys
1. the script could probably be changed. i can not do it because i did not write the scripts, just the guide. but i think the reset is good idea, otherwise large installs might cause memory problems (i am guessing).

2. yes but PS3HEN.BIN must be copied to HDD instead of flash. the script can not write new files to flash (it can overwrite files that already exist). this how it is done in AutoHEN.

3. probably because of number 2
 
P3T Generator Scripts for 4.90 still in development?
Well I used it to update the auto installer so it's done. It just requires some extra steps if you're using it to make a custom HEN installer. I haven't bothered to write instructions for it yet, but I will probably get around to it soon.
 
Well I used it to update the auto installer so it's done. It just requires some extra steps if you're using it to make a custom HEN installer. I haven't bothered to write instructions for it yet, but I will probably get around to it soon.
So the instruction is already contained in the header of this topic? Can I have the script for HEN? I think I will understand what and how :)
 
If you're using the updated P3T generator script to make your own HEN installer, you need to perform all the same steps detailed previously and also change some offsets to match the location of the HEN directories in the HEN.P3T file. Here's an example:

1.png

2.png


If you're not using it for a HEN installer you should comment out these lines in the script:

3.png
 

Attachments

I didn't understand why to edit the offsets, it seems that the script correctly calculates. In my example like this:

Code:
Stackframe address: 0x258565E
stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x2585396,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
+syscall(0x32B,0x8A000000+0x2585396+11.0x000100,0,0,0,0,0,0) // Directory: /dev_hdd0
+syscall(0x32B,0x8A000000+0x2585396+21.0x000100,0,0,0,0,0,0) // Directory: /dev_blind/bdplayer
+syscall(0x32B,0x8A000000+0x2585396+41.0x000100,0,0,0,0,0,0) // Directory: /dev_blind/hen

there is no hen_renamedir* in the bat file at all
 
I didn't understand why to edit the offsets, it seems that the script correctly calculates. In my example like this:

Code:
Stackframe address: 0x258565E
stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x2585396,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
+syscall(0x32B,0x8A000000+0x2585396+11.0x000100,0,0,0,0,0,0) // Directory: /dev_hdd0
+syscall(0x32B,0x8A000000+0x2585396+21.0x000100,0,0,0,0,0,0) // Directory: /dev_blind/bdplayer
+syscall(0x32B,0x8A000000+0x2585396+41.0x000100,0,0,0,0,0,0) // Directory: /dev_blind/hen

there is no hen_renamedir* in the bat file at all
no need to edit the batch (*.bat) file.

i have not looked at this much yet, but there is probably a small chance that it will be the same address.
 
no need to edit the batch (*.bat) file.

i have not looked at this much yet, but there is probably a small chance that it will be the same address.

in his example there is a hen_renamedir* variable, but in the attached *.bat file there is no such variable at all. That is, the output is the following:
Code:
stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x258565E,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
...
+save_file_overwrite(0x8A000000+0x2582146,fd_addr,0x8A000000,fd_addr,0xF,0x8B200000) // File: /1
+save_file_overwrite(old_filename_addr+3,fd_addr,new_buf_addr,fd_addr,0x196388,0x8B200000) // File: /dev_blind/bdplayer/bdj.self
...
+callsub(gadget12_addr,2,0,0,0,0,0,0,0,0,0x80)
+syscall(0x17B,0x200,0,0,0,0,0,0,0)
+stack_frame_exit();

here is what is in *.bat:
...
if "!oldnamelength!"=="" (
if not "%mkd%"=="y" >..\stackframe.txt echo stack_frame_hookup^(^)
>>..\stackframe.txt echo +save_file_overwrite^(0x8A000000+%dsize%,fd_addr,0x8A000000,fd_addr,!size!,0x8B200000^) // File: /!relPathFormatted!
echo F | xcopy /Y !relPath! ..\HEN.P3T >nul 2>&1
) else (
>>..\stackframe.txt echo +save_file_overwrite^(old_filename_addr+!oldnamelength!,fd_addr,new_buf_addr,fd_addr,!size!,0x8B200000^) // File: /!relPathFormatted!
...
if "!olddirlen!"=="0" (
>..\stackframe_mkdir.txt echo stack_frame_hookup^(^)
>>..\stackframe_mkdir.txt echo +syscall^(0x32B,0x8A000000+!diraddr!,0x000100,0,0,0,0,0,0^) // Directory: /!relNameFormatted!) else (>>.. \stackframe_mkdir.txt echo +syscall^(0x32B,0x8A000000+!diraddr!+!olddirlen!,0x000100,0,0,0,0,0,0^) // Directory: /!relNameFormatted!)

in his example it starts with 0x32c, and in *.bat with 0x32b
 
Last edited:
in his example there is a hen_renamedir* variable, but in the attached *.bat file there is no such variable at all. That is, the output is the following:
Code:
stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x258565E,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
...
+save_file_overwrite(0x8A000000+0x2582146,fd_addr,0x8A000000,fd_addr,0xF,0x8B200000) // File: /1
+save_file_overwrite(old_filename_addr+3,fd_addr,new_buf_addr,fd_addr,0x196388,0x8B200000) // File: /dev_blind/bdplayer/bdj.self
...
+callsub(gadget12_addr,2,0,0,0,0,0,0,0,0,0x80)
+syscall(0x17B,0x200,0,0,0,0,0,0,0)
+stack_frame_exit();

here is what is in *.bat:
...
if "!oldnamelength!"=="" (
if not "%mkd%"=="y" >..\stackframe.txt echo stack_frame_hookup^(^)
>>..\stackframe.txt echo +save_file_overwrite^(0x8A000000+%dsize%,fd_addr,0x8A000000,fd_addr,!size!,0x8B200000^) // File: /!relPathFormatted!
echo F | xcopy /Y !relPath! ..\HEN.P3T >nul 2>&1
) else (
>>..\stackframe.txt echo +save_file_overwrite^(old_filename_addr+!oldnamelength!,fd_addr,new_buf_addr,fd_addr,!size!,0x8B200000^) // File: /!relPathFormatted!
...
if "!olddirlen!"=="0" (
>..\stackframe_mkdir.txt echo stack_frame_hookup^(^)
>>..\stackframe_mkdir.txt echo +syscall^(0x32B,0x8A000000+!diraddr!,0x000100,0,0,0,0,0,0^) // Directory: /!relNameFormatted!) else (>>.. \stackframe_mkdir.txt echo +syscall^(0x32B,0x8A000000+!diraddr!+!olddirlen!,0x000100,0,0,0,0,0,0^) // Directory: /!relNameFormatted!)

in his example it starts with 0x32c, and in *.bat with 0x32b
only edit "stackframe_converter.html" and "index.html". leave .bat file as original.
 
only edit "stackframe_converter.html" and "index.html". leave .bat file as original.
So I don't edit, I just quote what is in * .bat and there is not at all what he has in the example (I wrote the difference above)
 
If you're using the updated P3T generator script to make your own HEN installer, you need to perform all the same steps detailed previously and also change some offsets to match the location of the HEN directories in the HEN.P3T file. Here's an example:
It looks like you have attached the old version of the script under 4.90, because although it allows you to install hen, but when installed on a new system, it causes a soft brick
 
So I don't edit, I just quote what is in * .bat and there is not at all what he has in the example (I wrote the difference above)
He has been trying to tell you to edit index.html, don't touch anything in the batch file or the other html file.
It looks like you have attached the old version of the script under 4.90, because although it allows you to install hen, but when installed on a new system, it causes a soft brick
No, I used that to make the new installer. The files are fine.
 
No, I used that to make the new installer. The files are fine.
in this picture the code looks like this:
1-png.40298

and the P3T Generator.bat file after the result gives the following values:
Code:
Stackframe address: 0x258565E

stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x2585396,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
+syscall(0x32B,0x8A000000+0x2585396+11,0x000100,0,0,0,0,0,0) // Directory: /dev_hdd0
+syscall(0x32B,0x8A000000+0x2585396+21,0x000100,0,0,0,0,0,0) // Directory: /dev_blind/bdplayer
+syscall(0x32B,0x8A000000+0x2585396+41,0x000100,0,0,0,0,0,0) // Directory: /dev_blind/hen
Do you see the differences?
0x32C!=0x32b,
hen_renamedir_adr1!=0x8A000000+0x2585396+41,
0x8A000000+0x(need change)!=0x000100
 
Last edited:
in this picture the code looks like this:
1-png.40298

and the P3T Generator.bat file after the result gives the following values:
Code:
Stackframe address: 0x258565E

stack_frame_hookup()
+syscall(0x32B,0x8A000000+0x2585396,0x000100,0,0,0,0,0,0) // Directory: /dev_blind
+syscall(0x32B,0x8A000000+0x2585396+11,0x000100,0,0,0,0,0,0) // Directory: /dev_hdd0
+syscall(0x32B,0x8A000000+0x2585396+21,0x000100,0,0,0,0,0,0) // Directory: /dev_blind/bdplayer
+syscall(0x32B,0x8A000000+0x2585396+41,0x000100,0,0,0,0,0,0) // Directory: /dev_blind/hen

Do you see the differences?
Yes because the screenshot is showing a segment from index.html. I didn't say edit stackframe.txt or the batch file, you need to edit index.html and change the offsets according to the directory names in HEN.P3T.
 
Ah, I get it, line 320 of index.html
But what if you need other folders in dev_blind ?
Example: dev_blind\vsh\resource\AAA

change this part ony ?
Code:
hen_renamedir_addr1=xtra_data_addr+0x5A;
hen_renamedir_addr2=xtra_data_addr+0x96;
hen_renamedir_addr3=xtra_data_addr+0xC0;
hen_renamedir_addr4=xtra_data_addr+0xE2;

// Must be changed depending on external stack frame (HEN only)
+syscall(0x32C,hen_renamedir_addr1,0x8a000000+0x1C25A44,0,0,0,0,0,0) // /dev_blind/hen
+syscall(0x32C,hen_renamedir_addr2,0x8a000000+0x1C25A77,0,0,0,0,0,0) // /dev_blind/hen/xml
+syscall(0x32C,hen_renamedir_addr3,0x8a000000+0x1C25A62,0,0,0,0,0,0) // /dev_blind/hen/remap
+syscall(0x32C,hen_renamedir_addr4,0x8a000000+0x1C25A8A,0,0,0,0,0,0) // /dev_blind/hen/remap/xml
 
Last edited:
Back
Top