butterflyaska 发表于 2005-8-8 19:17:24

[ZT]不再做傻瓜!自己动手玩转hookboot(使用教程初、中、高级篇)

转载请著名 PSPChina

hookboot应该是使用频率最高的loader了,支持游戏很多,而且比较完善。因为论坛一直没有给出比较详细的讲解,所以导致了这样那样的傻瓜版下载,耐心看完你就不会再作傻瓜了,也许你还可以发现新的可以玩的游戏。

UMD游戏数据介绍:
UMD光盘是存放游戏的载体,他存放数据使用的ISO9600标准,这表示我们可以把里面的数据使用运行在程序读到记忆棒上去,现在咱们手里的ISO就是从原来的UMD里面复制过来的。ISO是一个光盘镜像,用winrar打开可以看到里面的目录和文件列表。UMD游戏目录结构是这样的:
┏PSP_GAME/┏USEDIR/-----(游戏数据目录)
┃         ┣SYSDIR/┏UPDATE/-----(有些游戏会带这个强制升级您的PSP版本)
┃         ┃       ┣EBOOT.BIN---(游戏主执行程序)
┃         ┃       ┗BOOT.BIN----(游戏启动程序)
┃         ┣PIC1.PNG---(游戏背景)
┃         ┣PIC2.PNG---(游戏背景小图片)
┃         ┣PARAM.SFO--(信息)
┃         ┣ICON1.PMF--(游戏图标动画)
┃         ┣ICON0.PNG--(游戏图标)
┃         ┣SND0.AT3----(游戏背景音乐)
┗UMD_DATA.BIN---(UMD光盘信息)

USERDIR目录下呢有一些文件你要注意,就是*.prx文件,他有时放在module目录下,有时放在kmodule目录下,有时放在sys目录下不等,这些*.prx文件是游戏启动或执行的时候需要装载的库文件。这些文件的转载至关重要,下面会讲到有关他的东西

MSD运行游戏的历史:
其实最早使我们能玩msd游戏的还得感谢wab他支持1.0和1.5,他的原理就是修改BOOT.BIN文件在游戏本身载入前由loader去载入那些*.prx文件,并修改了转载游戏数据的路径,并屏蔽一些检测UMD光盘和其他的一些重要的函数,虽然他的程序和使用方法非常简单,但是毕竟有很多局限和bug的地方支持游戏也不是很多,但是尽管这样WAB的到来是开辟了msd游戏的道路。跟随着wab的脚步Hookboot出现了,他同样支持1.0和1.5,hookboot同样也会修改BOOT.BIN文件,但是原理有所不同的是他使用钩子原理把运行某些重要函数的时候做个标记用hookboot程序去运行那些函数而不是简单的屏蔽这样显得更合理,也不需要修改*.prx路径,因为他的所有启动顺序都是按照BOOT.BIN的顺序去运行的,而且需要检测UMD的函数就屏蔽掉了。这样做非常的明智而合理。因此hookboot支持更多游戏,也减少了很多的错误。hookboot还在不断的发展,相信有完美的那一天。hookboot出现后fastloader出现了他是第一个直接装载游戏ISO的程序,也支持了几个hookboot不支持的游戏,但是他只支持1.5并且还需要光盘引导,但是他的发展还是值得期待的。同时hookboot0.94版也支持了ISO。对于支持ISO我抱有不同的意见,主要是容量上,ISO比释放出来后要稍微大一些。但是随着棒子大了,我想应该不是问题,他的好处就是方便。

hookboot的教程:
这个东西也许应该写写,目的就是减少傻瓜:) 别介意我这样称呼,我相信很多人看到坛子铺天盖地的裸体男人都不舒服哈哈.其实看到这里您应该有信心我会把hookboot讲清楚,以后自己就能自己动手了,而你要做的就是下载完整的ISO.不要再当傻瓜了。

下载下来的hookboot的文件目录(以最新的0.94为例):
┏PSP/ ┏HOOKBOOT/-----(原始的hookboot程序,也提供自定义背景图标等的工具)
┃   ┗GAME/┏xxxx1游戏目录
┃         ┣xxxx2游戏目录
┃               。
┃               。
┃               。
┃         ┗xxxxn游戏目录
┣module/┏V150/---(1.5使用的*.prx文件的收集目录)
┃   ┗V100/---(1.0使用的*.prx文件的收集目录)
┗HOOKBOOT.ini---(hookboot的总配置文件)
hookboot包的目录完全按照psp的目录结构这告诉你直接将它解压到psp根目录就可以了,但是我们不是傻瓜我们不要这样做。你看PSP/HOOKBOOT这个目录我们就没必要放到psp里的对吧。还有GAME目录下那些xxxxx游戏目录,是hookboot的作者预设置的几个典型的游戏,每个xxxxx游戏目录里的hookboot.ini文件都是不一样的,你可以看看“漆黑骑士”的哪个置顶的hookboot游戏支持列表帖子,里面有游戏对应哪个hookboot.ini的说明。其实hookboot的执行程序就一个,就是psp/hookboot目录里的那个eboot.pbp文件。市面上那么多傻瓜般的都是用这个eboot.pbp加入了对应游戏的图标、背景和音乐而已。

所以对于一般的玩家当我们要玩一个游戏的时候我们要怎么做呢?看下面
1。查看一下hookboot的游戏列表是否支持您要玩的游戏,并看他是需要哪个hookboot.ini文件,这个因该不难。
2。然后将hookboot.ini和eboot.pbp文件放在PSP/GAME/的自定义目录下比如NBA2005。eboot.pbp呢你可以直接用原始的,也可以修改一下加入对应那个游戏的背景拉音乐拉什么的。你可以使用PSPBrew工具做,下载和具体可以看看这个帖子。
http://bbs.pspchina.net/read.php?tid=18675&fpage=1&toread=1
3。游戏呢,比如刚才建立的NAB2005目录,这里你需要在NBA2005下面再建立umd0/目录,游戏数据(ISO里的所有东西)就放到NBA2005下的umd0/目录去。
4。最后一步,这一步你也可以不管。修改hookboot.ini文件里的相关信息,1)TITLE=xxxxxx

好,你可以玩游戏了。

对于高级玩家和测试游戏能否运行来说,你可能要更多的解说了。
一、首先你要明白从0.94以后hookboot.bin有两种,第一种是对应释放出来的游戏数据,第二种是对应ISO的。区别就在这里。
1)。
# 重新指向*.prx文件的路径,你可以找到下面的部分,这个是mingolf的例子,不同的
#游戏它的*.prx路径不一样,1.0指到v100目录,1.5指向v150目录这是需要修改的
# redirect *.prx folder because module file can't access in IS9660 image.
ASSIGN_PATH=disc0:/PSP_GAME/USRDIR/module/module,fatms0:/module/V100
ASSIGN_PATH=disc0:/PSP_GAME/USRDIR/module/kmodule,fatms0:/module/V100
ASSIGN_PATH=disc0:/PSP_GAME/USRDIR/module,fatms0:/module/V100

2)。
#指定替换disc0:/,
#mount ISO9660 file system
ASSIGN_PATH=disc0:/,UMD.ISO@

3)。
#加入设备模拟
#for UMD block access mode
ASSIGN_PATH=umd0:,UMD.ISO
ASSIGN_PATH=umd1:,UMD.ISO

4)。
#指定boot.bin路径,这里写以UMD.ISO@为盘符 ?
#TARGET_PATH=UMD0/PSP_GAME/SYSDIR/BOOT.BIN
TARGET_PATH=UMD.ISO@/PSP_GAME/SYSDIR/BOOT.BIN #in ISO9660 file


二、也就是说,0.94里只有MINGOLF这个游戏的配置文件是对应ISO的,假如你要让泡泡龙支持ISO你就可以在泡泡龙的hookboot.ini文件里做第一步的那些修改

三、如何测试更多的游戏支持?
当你测试的时候你先别管ISO,你只需要用传统的把游戏数据放到umd0/目录下的方法去测试。然后用不同的hookboot.ini文件来测试这个游戏用哪个hookboot.ini文件能运行。
如果都不能你就可以做下面的工作了。
1)改成记录日志模式,我们需要看看哪些函数需要被hook
#----------------------------------------------------------
# UMD EMULATION MODE
#----------------------------------------------------------
UMD_EMU=1(把这里替换成0,采用记录日志模式)
   
LOG_DEVICE=FILE         #msfat0:/LOG.txt --------这是日志文件
   
2)修改hook函数表,对应着log.txt里面的函数表,我们需要hook的
#----------------------------------------------------------
# HOOK NID LIST
#
# syntax:
# NID=,
#
# hook_nid : HEX nid number (ffffffff == ALL supported NID)
# hook_mode : N=NO HOOK , M=MODULE , S = SYSTEMCALL
#---------------------------------------------------------- ?
NID=B7F46618,S #sceKernelLoadModuleByID

#path replace
NID=977DE386,S #sceKernelLoadModule
#NID=B29DDF9C,S #sceIoDopen   (NID前面带#号的是不hook的)
      ·
      ·
      ·
      ·
#UMD emu 这些是需要的,跟UMD相关的函数都需要hook
NID=46EBB729,S #sceUmdCheckMedium
NID=C6183D47,S #sceUmdActivate
NID=E83742BA,S #sceUmdDeactivate
NID=8EF08FCE,S #sceUmdWaitDriveStat
NID=56202973,S #sceUmdWaitDriveStatWithTimer
NID=4A9E5E29,S #sceUmdWaitDriveStatCB
NID=6B4A146C,S #sceUmdGetDriveStat
NID=20628E6F,S #sceUmdGetErrorStat
NID=340B7686,S #sceUmdGetDiscInfo
NID=AEE7404D,S #sceUmdRegisterUMDCallBack
NID=BD2BDE07,S #sceUmdUnRegisterUMDCallBack
   
3)好了将UMD_EMU设置为游戏方式就可以去测试游戏是否运行了,
#----------------------------------------------------------
# UMD EMULATION MODE
#----------------------------------------------------------
UMD_EMU=1(把这里替换成0,采用记录日志模式)
   
基本写到这里,以后慢慢补充和修改吧。

小司 发表于 2005-8-8 20:31:33

傻瓜好
傻瓜就是硬道理

dtx66 发表于 2005-8-8 21:29:26

强烈超级支持~!!!!!!!!!!!
难得有人写出一点精彩的文章......不顶不是好人~~~~
希望斑竹加精...置顶...
期待楼主的继续补充和修改~



楼上的就情愿当傻瓜?????


其实0.90和0.92的HOOTBOOT还需要用KXploit Tool改一下版本..让1.5能认.....楼主能看的懂吧???把这部分也加进去吧.......
然后就是改EBOOT.PBP了(改善视觉效果)...我是用PBP Unpacker重新做EBOOT.PBP的..
方法如下:
1.用PBP Unpacker打开带%的文件夹里面的EBOOT.PBP文件.提取出PARAM.SFO
2.选择新建.PBP文件...选择刚刚提取出来的PARAM.SFO
3.┏PSP_GAME/┏USEDIR/-----(游戏数据目录)
┃         ┣SYSDIR/┏UPDATE/-----(有些游戏会带这个强制升级您的PSP版本)
┃         ┃       ┣EBOOT.BIN---(游戏主执行程序)
┃         ┃       ┗BOOT.BIN----(游戏启动程序)
┃         ┣PIC1.PNG---(游戏背景)
┃         ┣PIC2.PNG---(游戏背景小图片)
┃         ┣PARAM.SFO--(信息)
┃         ┣ICON1.PMF--(游戏图标动画)
┃         ┣ICON0.PNG--(游戏图标)
┃         ┣SND0.AT3----(游戏背景音乐)
┗UMD_DATA.BIN---(UMD光盘信息)

把对应的文件一一选择.....PIC1.PNG,PIC2.PNG,ICON1.PMF,ICON0.PNG,SND0.AT3

注意.其中不包括PARAM.SFO   (重要~!)
注意2:有些游戏是没有这些文件的(或者不都有....一般都有背景图和图标...)
4.然后保存作好的EBOOT.PBP
5.用作好的EBOOT.PBP替换带%文件夹里面的那个(名字都是一样的)
6.这样就作好了带游戏标题和图标.有些还有音乐(如RR和炼狱)的启动文件~!!


看了楼主的帖子突然心血来潮......

妖猫村正 发表于 2005-8-9 09:15:28

一说hook就想起铁钩船长那款街机.........
写的好,应当置顶的说。
唉,这年头的男人都真懒呀,还是磨练一下DIY的精神比较好。

sunqian2104 发表于 2005-8-9 10:29:56

真的很难
傻瓜也很好
至少方便.....

sk8cn.com 发表于 2005-8-9 15:54:34

顶~~~~~~~~~~不过没啥兴趣.

不懂
页: [1]
查看完整版本: [ZT]不再做傻瓜!自己动手玩转hookboot(使用教程初、中、高级篇)