`
paofan
  • 浏览: 388486 次
社区版块
存档分类
最新评论

强制开源---Sony PSP

    博客分类:
  • SOG
阅读更多
经常看到有人拿着PsP, 男男女女。
其实这也是一个重要的开源现象。

http://df38.dot5hosting.com/~remember/chris/




摘录网文如下





==========================================================================================

IGN采访:

中文出处不详

原文:

uk.psp.ign.com/articles/775/775176p1.html


继对正式的游戏开发团体High Impact Games的采访后,IGN这次邀请到为各位玩家所熟悉的与psp破解大神Dark_Alex齐名的NOOBz的Fanjita(图右,eLoader和piKey 的作者)。

Fanjita并不是职业和得到许可的游戏设计者,但是他和身边的一群独立程序员对psp破解的贡献是不可估量的。

IGN:黑客有很多种:有的攻击政府机关,有的攻击商业企业,有的盗取密码,有的对用户进行远程控制。为什么你会选择走上破解PSP系统的道路呢?

Fanjita:最初,我只是想能够在psp上找到乐 趣,但是每次玩的时候只有那么一两个umd游戏,非常不方便,尤其在这种高机能的有潜能的平台上。一旦我完全投入到自制破解系统,对于我来说,这变成一种 责任去帮助其他人达到一样的梦想。实际上,这是更有效的途径去挖掘psp的潜能。这种挑战仍然十分有趣,我还会继续这场“战斗”。此外,现在越来越多的自 制系统的产生,但我仍然有时间去从事其他psp的破解计划,例如最近的keyboard driver(用键盘控制psp)。

IGN:SONY是对开放存取的最大倡导者,例如有 Yaroze(使用者可以在他们的家用电脑上设计与PlayStation兼容的游戏),Linux Kit, PS3 Linux OS,还有usb和硬件输入,标准化视频和语音。但是为什么你认为sony与自制系统之间的斗争是艰辛的?

Fanjita:这是有点让人吃惊,他们还没有尝试去控 制psp自制系统开发的环境。很明显,他们对待自制系统不得不小心翼翼,尤其是软件销量不理想,第三方游戏开发者信心不足的psp平台。我怀疑有两个因素 使得他们对待psp自制系统特别小心。一个我刚才已经提到的,另外一个是sony会冒着一种危险,就是打击自制软件的方法会给盗版者留下一种参考。我相信 许多自制软件者都会期待sony会如此做,但是这明显不可能的。

IGN:一种自制软件我曾经接触过的是 Dark_Alex开发的psp视频全屏播放。所有人都在猜想为什么全屏官方仍然不支持?许多人认为这是因为sony为了促进umd视频的销售。但是 ps3已经允许HD 1080p。现在umd的销量不可观,甚至得到官方许可的psp开发者想在psp上宣传他们的游戏也只能使用320×240格式的视频。是什么原因使得 sony这样做?

Fanjita:我并没有察觉到有什么技术限制去破解全屏---把电影放在ms棒上。毕竟,它是在常规的硬件上运行,这是一定有可能的,对吗?如果没有从官方得到让人信服的理由,我们都为认为sony是为了让umd看起来更加好而已。

IGN:我猜破解对于许多人来说是一件有趣的事情。但是假设你能够开发出一种硬件允许非法的编码但是仍然阻止official ISO rips,你会这样做吗?或者你会继续你现在的破解计划?

Fanjita:我个人希望有这样的硬件产生,但是仍然允许以某种方式运行umd上的游戏。这是一个需要慎重对待的问题。但是从另外一个方面来说,如果我有时间,我会做这方面的研究。

IGN:你是否有期待过sony能够给自制软件开发者一些低层次点的认可?或者你觉得sony根本不可能这样做?

Fanjita:我非常乐意看到他们这样做。但是我认为自制软件的开发对于psp的贡献是很多的。并且迫使sony不断地升级官方系统。

IGN:你猜自制软件还能在psp上有什么作为?

Fanjita:仍然有许多值得研究的地方。我们真正需要的是使人们能够更多地享受到psp的乐趣,不仅仅限于一些皮肤主题。The keyboard driver我们刚刚发布的仍然有许多发展空间,能够更深的挖掘psp的机能。

IGN:我们都很好奇想知道,你是什么背景?你有破解其他硬件或者软件吗?你有正式的专业程序员的工作或者只是兴趣而已?你经常玩psp游戏吗?既然现在你把你所想的都在psp上实现了,那么你会经常使用你自己你自己制造的东西吗?或者仅仅是实现别人的愿望而已?

Fanjita:psp是我的处女破解。多年前我有过一 台破旧的ps1,因此我能够玩不同的进口游戏。我是一个专业的软件程序员,并且已经工作超过10年了。psp提供了我不同的编码在工作中我没有接触过的。 我拥有超过20张umd游戏碟,并且把他们都“暴机”了。不过诚实的说,对于我,并没有期待去拥有最新的psp游戏。我在psp上的破解工作都是非盈利 的。我并没有很多时间去接触别人的自制软件,虽然我曾经尝试去做破解方面的领头羊,但是现在只有时间去保持自制软件数据库(www.psp-homebrew.eu) 的更新。有时我很荣幸能够被邀请测试自制软件的编码内容,这是一个很好的机会去接触最新的自制软件。我刚刚才完成一个psp编码的测试,很高兴能够看到他们取得的进步。


==============================================================================================
破解和升级 三大PSP黑客小组实录
参考资料出处:
games.rednet.cn/c/2007/03/12/1153590.htm

如今,电脑Hacker们已经成功地在与Sony的攻防战中获得了胜利,并且使用他们的方法控制了PSP这台便携式主机。索尼所销售的PSP是以软件为基础的设备,通常称为固件(Firmware),用于控制和操作硬件。<!----><!---->另 一方面固件锁住了PSP的许多功能,限制用户运行自行开发的软件,也就是自制软件(Homebrew)。并且无法运行某些非购买的特殊PSP光盘。但是在 上个月,三个Hacker小组, Noobz, Team C+D以及由Dark_AleX牵头的一个团体联手发布了3.03的系统漏洞。

  破解PSP

  利用这个漏洞,他们研究出了破解所有PSP的方法,无论主机的寿命及其所运固件版本都可以运行。 这次的成功造成了PSP自制软件圈内的轰动,但也因为被破解的PSP可以运行盗版游戏而震惊了Sony。Sony发言人对外表示“现在所面临的问题并不是 由于自制程序的应用,而是正在盗版商业软件的Hacker们。”“Sony从未和我们联系过,这只能令我们深信我们所做的是正确的。”Fanjita (David Court),一名PSP Hacker说:“盗版是非法的,而我们也是强烈反对以任何形式帮助盗版行为以或从中获利。”但Hacker们表示,盗版并不是他们去破解PSP的动机。 “我的目标是让尽可能多的人加入到自制软件的开发中来”,Fanjita说,一位来自Noobz team的成员。他还表示:“人都享有处分自己所拥有的硬件设备的权利,你可以在你所购买的机器上做任何事情。盗版行为令我十分痛心,因为我行为确实给盗 版提供了捷径,这很更难从道德上判定是否正确。”但我们对于盗版的立场是坚定的,我们希望成为一个标表率。但令人遗憾的是Sony却从未和我们联系过,这 只能令我们深信我们所做的是正确的。”

  揭开Hackers的面纱

  Fanjita,真名叫做David Court,他与社会上所普遍认为的年少轻狂的通宵熬夜工作的年轻人这种Hacker形象有很大的不同。他34岁,已婚,是一位专职的程序员,为一些大的 电信公司编写服务器软件。在爱丁堡的家里,他每天只花一个或两个钟头编写PSP黑客软件。并且他还是一名武术爱好者。

  Dark_AleX 则更符合Hacker的形象。他是一个西班牙的大学生,他Hacker绰号源于他真名,Alejandro,他喜欢哥特风格的一切事物,他说,他对日本漫画中和小猫都很有兴趣,但PSP Hack才是他的最为热衷的。

  我把PSP Hack当作我闲暇时刻的最好的消遣,其他人或多或少的会把这些时间消磨在电视剧上”,他说,“我喜欢它主要是因为解析一部由Sony这样的大企业所设计 设备的操作系统是十分有意思的。而且我反对各种形式的DRM (数字版权管理系统——一种电子版权加密保护方式)以及反对各种形式制约一个设备而无法展现它真实的潜力。”

  绝非盗版

  Dark Alex表示虽然他的所作所为盗版提供的捷径,因为盗版行为仅仅是PSP的拥有者运行复制出的镜像就可以了,但这些盗版(拷贝)的蔓延并不是他的责任。 “我认为这完全取决于用户他们自己如何去使用我的软件”,他说,“我相信使用我软件的人能做出正确的判断,远离那些拷贝出来的盗版,而不要像那些媒体公 司。我想当一个人想要从原版光盘中复制一份游戏的时候他可以找到很多理由。” “你可以往一条记忆棒里传送很多游戏,这非常方便,而且事实上这些游戏在运行的时候时读取会更加快速。当然对于我来说最重要的,就是可以修改这些游戏,玩 家可以依照自己的意愿去自定义游戏”“我看到过很多非常厉害的事情,比如有人改变了游戏中的音乐,或者把整个游戏翻译成他们自己的语言。”(这里要向国内 伟大的汉化者致敬。)

  每当Sony发布了PSP更新的固件升级时,这三支Hacker小组就展开竞赛看谁能率先破解代码并且解析出它们。而除了竞赛之外他们也同心协 力来找出破解的方法。在近几个月,这项任务开始变得更加艰巨,因为Sony在制造PSP的时候采用了更安全的主板,而Sony的固件系统也变得越加复杂, 企图依靠这些来抵御Hacker们的破解。“当每一新版本的PSP固件发布,我们可以发现Sony修补了先前的漏洞和增加防护措施来对抗我们,” Court说, “在这种情况下,我们在一个名为“侠盗飞车手 自由城故事”的游戏存档中发现了一个漏洞,这个漏洞恰好能被利用。在读取这个游戏的时候,能够让你获取访问固件核心的权限,这个Sony固件作者的疏漏导 致的漏洞,它能让黑客们去运行他们自己编写的特殊程序。”

  有一种升级叫做“降级”

  这种“升级”使PSP可以安装此前较早版本的固件系统,而这个版本固件允许自制程序的运行。这个早期的固件缺点是,它不能运行最新的游戏,但这 个问题很快就被Dark_Alex解决了,在一个叫做Booster的黑客的帮助下,他编写了自己的PSP固系统件叫做Dark_Alex's Open Edition(OE系统)。这个固件安装好后,PSP就被完全开放了,同时还拥有了最新固件的所有功能。

  最近一段时间,当 NOOBZ降级小组的降级程序发布和Dark Alex的OE自制固件发布之后,Sony就立即升级PSP新版本固件,并修复了一些将使破解成为可能的漏洞。如果你购买了新PSP并且升级到了Sony 的最新的系统,那么这台PSP将不能被破解——至少要等到Noobz,TEAM C+D和Dark_Alex及他的团队找到其他可用的新漏洞,这个在Sony和Hacker之间猫和老鼠的游戏仍将继续。


一切只是开始





===============================================================================================
参考资料出处:
gezhi.org/node/211

Abstract: 本文回顾了在PSP的发展过程中hacker们对Sony不屈不挠的斗争历史,介绍了PSP的购买知识,详细说明了怎样安装game loader以及如何设置Homebrew的编译系统PSPSDK。

介绍

首先推荐下面几篇文章:

Wikipedia上对PSP的介绍 ( or here )
PSP的硬件详尽参数与实际性能
PSP菜鸟学堂

简单地说,PSP(PlayStation Portable)是索尼公司04年底推出的一款掌上游戏机。PSP配置两个333兆赫主频的CPU,支持很好的3D处理功能,大容量的UMD电影和游戏 光碟(1.8G),Memory Stick Pro Duo(目前可以支持数个G的容量), 无线网络(支持网络对战)和红外线连接(多机直接连接),可以播放音乐浏览图片,继承了PS2手柄的设计(第一张图左下那个黑色的圆钮是模拟的摇杆)。这 款机器本身已经是游戏界的传奇,但这还不是故事的全部。

PSP的UMD光盘技术是垄断的,UMD无法被PC上的光驱读写,所以想要看电影或者玩游戏必须购买正版UMD光盘(非常昂贵,通常是30多美 元),而且用户无法从USB口刷新PSP的操作系统。但是,在PSP推出半年之后也就是去年五月份这种局面有了改变,有hacker发现PSP Firmware1.0版本可以运行Memory Stick Pro Due中用户自己写的程序,这样用户就得到了kernel级别的系统运行权限,这种用户自制的程序被称为Homebrew(翻译成中文指“家中土产的”) 程序。随后,一些hacker在很短时间写出了将UMD光碟Rip成iso并保存在Memory Stick Pro Duo上的程序,以及将Memory Stick Pro Duo上的iso文件虚拟为系统UMD的“虚拟光驱”软件,这样用户就可以从网上下载iso文件(通常是数百兆)到自己的PSP上玩而不用花钱购买正版游 戏和电影。更重要的是,用户可以自己编写游戏或者用程序来实现PSP没有的功能,比如有的程序可以将PSP变成红外遥控器,支持数千种设备,下次你到 bar里就不用忍受一百年不换的无聊的电视频道了 :)

这种局面并不会直接影响PSP的销路,但是会影响游戏出版公司的利润,所以会间接影响到索尼的利润并可能引来官司,所以索尼推出了1.50版本的 Firmware禁止运行用户自己编写的程序,并且利用firmware的新特性来吸引用户升级。但是好景不长,hacker们发现了这个 1.50firmware中显示程序图标导致内存溢出的一个bug,这个bug使得homebrew又成为可能,甚至有hack写了程序将1.0版本的 homebrew程序转化成1.50版本。

(走题一下,Sony程序员的疏忽可以作为我们programming的反面教材,不过这么多smart的hackers keep eyes on the codes不发现错误几乎是不可能的 - 从而,我们体会到了Open Source的好处)

接着,可以想象的是,Sony又在网站上提供了1.51,1.52版本的firmware堵上了这个漏洞,吸引用户下载新版本,并且在1.5中有一 个network update功能让用户能直接用PSP从网络更新系统。“叛乱”似乎平定了,虽然1.0和1.5的PSP已经卖出去不少并且homebrew的程序已经广 为告知。

但是,hacker们还在盯着。

Sony推出了2.0版本。这个版本支持一些新的功能,比如允许用户自己设定桌面壁纸,添加了网络浏览器等等。但是fancy的功能和膨胀的代码终 于让hacker再次发现了漏洞,一个查看图片的bug导致内存溢出从而可以欺骗2.0的系统以运行1.5版本的系统安装文件!于是2.0的PSP被降级 到1.5,welcome to the old world! :)

然后Sony推出了2.01, 2.5, 2.6版本的firmware,堵上漏洞,并用新特性来吸引用户升级。然后,hacker们又发现游戏Grand Theft Auto: Liberty City Story中的一个溢出漏洞可以导致用户运行盗版游戏(不过这次不能降级了,也不能支持homebrew程序),看来,现在应该被责备的轮到游戏出版商了 :)

目前最新的版本是2.7,尚未找到漏洞。

本文接下来的篇幅会谈谈如何购买PSP,设置引导游戏iso的软件(Game Loader),以及如何在Ubuntu Linux配置homebrew的编程环境。

购买

1.0(firmware)版本的PSP仅仅在日本发行过,现在很少见。目前能买到的新PSP是2.7版本,199美元,有时可以找到deal, 150多美元。不过2.01,2.5,2.6,2.7版本的PSP目前无法运行Homebrew程序,所以如果你想要hack PSP,请购买2.0及其以前的二手PSP。因为可以运行盗版游戏,所以二手的旧版PSP(有些附带几张游戏光盘)一般要200多美元甚至300美元以 上,比新的还贵。在ebay上偶尔能买到300圆以下的新的2.0及其以前版本的PSP,不过我觉得没必要,二手的足够了。我的二手的2.0版是从 craigslist上找的,150美元,那个美国哥们对他的PSP保养得很好(买了一年几乎没玩过),随机附赠的《蜘蛛侠》的电影UMD都没有打开。

如果你买到的是1.5版本,那么请直接阅读下一节。如果是1.51或者1.52版本的PSP,请先升级到2.0:在qj.net上下载2.0美版或者日版的升级用的EBOOT.PBP,放在PSP/GAME/UPDATE/文件夹下面,然后进入菜单的game->memory stick运行2.0updater即可。将2.0降级到1.5可以参考下面的网页

英文

Game Loader的安装和使用

我使用的Game Loaders:

  • DevHook 0.41a
  • UMD Emulator 0.8c
  • MPH Gameloader 1.1 for 1.5

这三个软件已经可以运行我手边的游戏。关于UMD Emulator和MPH Gameloader的下载和安装请google。下面我谈谈怎样安装DevHook 0.41a:

原理:正如DevHook的名字所言,这个软件实际上将系统的光驱等设备(device)用其他自定义的设备(比如iso虚拟光驱)来替代,这样就 可以像使用UMD光碟一样使用iso文件了。注意:需要一张任意的正版UMD游戏光碟,这样UMD的盘符才能在game菜单中显示出来。DevHook强 大的地方不仅在于可以替换单个设备,而且可以替换整个系统(比如将正在运行的1.5系统替换成2.0或2.5系统!暂时替换,并没有写入flash,所以 彻底关机后还会回到原来的1.5系统)。只安装DevHook是不够的,因为它只是一个launcher的壳子,还需要下载2.0或2.5系统的EBOOT>PBP。但下载的2.0或2.5系统的EBOOT.PBP并不能直接使用,需要用一个软件PBP unpacker将其中的DATA.PSAR提取出来,然后用DevHook自带的dh installer将其解开,解密。

步骤:
1. 下载DevHook 0.41,解开。将其中的MS_ROOT下的文件夹复制到PSP Memory Stick上。其中,PSP/GAME目录下面的DEVHOOK和DEVHOOK%下放的是主程序,dh_inst和dh_inst%放的是刚才提到的dh installer。
2. 下载DevHook 0.41a,解开。这实际上只是一个0.41的升级包,其中有用的文件只有MS_ROOT/dh/kd/devhook.prx 那个文件,用它覆盖DevHook 0.41中的对应文件即可。
3. 这样我们得到的DevHook仅仅是launcher。我们需要下载2.0或者2.5的EBOOT.PBP文件,然后用PBP unpacker解压EBOOT.PBP得到DATA.PSAR,将这个文件放在PSP memory stick根目录下面。
4. 在PSP上运行dh installer,这个程序会自动从DATA.PSAR识别firmware版本是2.5或者2.0,自动将其解压并解密,然后自动放在对应的位置 (memory stick 根目录的dh/200或者dh/250目录下面)。运行完后,那个dh_inst和dh_inst%文件夹就可以删除了。

你不需要2.0 2.5两个EBOOT.PBP,2.5就足够了(不过显然这样只能模拟2.5系统)。

在2.5中CPU频率设置为333/166无线网络好像是不可使用的,不过频率设置到222/111就可以了。DevHook的研制者booster正在开发支持2.7的版本。

设置Homebrew的编译系统PSPSDK

PSPSDK网站

地球人都知道编译软件首先要有编译器,比如Linux和cygwin中的C语言编译器。这节的目的就是告诉你怎样在Ubuntu Linux下配置为PSP设计的C编译器psp-gcc,注意这个psp-gcc生成的是PSP中可执行的目标代码,和Linux中的gcc相互独立完全 不同,他们的头文件和库文件放在两个互不相干的位置。我们知道C语言有很强的从一个操作系统移植到另一个操作系统的能力,就是说PC上的C程序源代码基本 可以由psp-gcc编译得到PSP的可执行代码!

设置PSPSDK方法很简单:

pspsdk的svn下 载那个toolchain.sh脚本,以root权限运行这个脚本(因为需要往/usr/local/pspsdk里写东西),它会自动下载源文件和 patch文件,自动patch,编译并最后安装。整个过程需要较长时间,可以去喝杯咖啡(or whatever)。pspsdk就安装在了/usr/local/pspsdk文件夹中, /usr/local/pspsdk/psp/sdk/sample下面是一些例子,你可以试试make :

    make 会生成1.0需要的EBOOT.PBP文件
    make kxploit 会生成1.5需要的两个文件夹 xxx和xxx%
    make SCEkxploit 和make kxploit 一样,不过两个文件名称为 __SCE__xxx和%__SCE__xxx,这利用了fat文件格式的一个bug,这样,那个%__SCE__xxx文件夹在PSP的game菜单中 就不会显示为corrupted。

这样就安装好了PSPSDK,具体使用方法请到PSPSDK的官方主页,也可以从sample下面的例子得到启发。有了PSPSDK这个基本的编译环境之后,已经可以让你编写homebrew程序。不过有的程序需要一些额外的library,这些library可以从pspsdk的svn中下载:

比如zlib
svn co svn://svn.pspsdk.org/psp/trunk/zlib

下载完成后进入目录,首先阅读README.PSP或者README等帮助文件,上面详细说明了需要怎样编译和安装。需要强调的是这些库之间有依存关系,先后安装是有顺序的。下面是我成功安装的库,以及补充说明(排在后面的库可能依赖前面的库,前面的库不依赖后面的库):

zlib
libpng (依赖zlib,我试过其中的例子screenshot可以编译在PSP上运行)
jpeg
mikmodlib (不要安装那个libmikmod,两者不一样,libmikmod导致cpplibs无法编译通过,另外make install就可以安装而make可能会失败,因为作者对make的知识很烂 :) )
cpplibs (sample 可以通过,但是需要在makefile的编译链接库选项中加入 -ljpeg,这是一个bug)
libogg
freetype
libTremor
libvorbis
aalib (sample "aafire" 可以编译运行,但是 其中的aastdin.c 文件头部要加入一行 #include <sys fd_set.h=""> 因为其中使用了fd_set这个structure,但这个structure定义在sys/fd_set.h中,在sys/select.h中如果检测到不是cgywin就不会自动include sys/fd_set.h,这是一个bug)
prxtool (这是一个本地PC上使用的prx工具)
pspgl (tests 和 test-vfpu 都可以通过, test-q3 没试过不知道)
编译pspgl的tests注意</sys>

    首先要export环境变量
    export PSP_REVISION=1.50
    export PSP_MOUNTDIR to a directory,比如tests/PSP

    然后修改tools/psp-install,注释掉一些语句用新语句替换:

    # LONG=\"$ IMGDIR
    LONG=__SCE__" $" src="http://gezhi.org/files/tex/0670f30a4ecab34ac2e7d7c366c9abedec552ec9.png" class="teximage" />IMGDIR"
    BASE=`echo \"$ LONG
    # SHORT=" $" src="http://gezhi.org/files/tex/e0145a131655fa96e050d1bbfb776448ce8a73cf.png" class="teximage" />BASE"~1%
    SHORT=%__SCE__\"$ IMGDIR
    else
    # LONG=" $" src="http://gezhi.org/files/tex/eaa04c6421c9ee9ed28d9495597df3c12576e994.png" class="teximage" />IMGDIR"
    LONG=__SCE__\"$ IMGDIR
    # SHORT=" $" src="http://gezhi.org/files/tex/ee30fc9dd6153e54bb850ea2a3532c3b27abf619.png" class="teximage" />IMGDIR%"
    SHORT=%__SCE__\"$ IMGDIR

    修改tools/psp-install,注释掉两句:

    # while [ ! -d $" src="http://gezhi.org/files/tex/c27b6e48927131678f6973efdebe7fba01a90b5a.png" class="teximage" />(PSP_MOUNTDIR)/psp/game ]; do mount $ (PSP_MOUNTDIR); sleep 1; done&lt;br />
        PSP_MOUNTDIR= $(PSP_MOUNTDIR) \
    $ (PSP_INSTALL)  $(INSTALLFLAGS) $ < \&lt;br />
        --eboot-title=* $ (BUILDDATE)
    # umount $" src="http://gezhi.org/files/tex/d1f444a698c118955313a9c5cc72e7dce8960f5e.png" class="teximage" />(PSP_MOUNTDIR)

SDL (没试 samples)
SDL_gfx (没试 samples)

然后,你可以试试pspsdk svn中其他的好东东,发现什么好玩的请告诉我。

相关资源

几个有用的站点:


PSPSDK 网站及论坛
PSP Hacks
PSP @ qj.net
电玩俱乐部论坛
PSP中文网
PSPChina论坛


分享到:
评论
1 楼 zhangzhaofeng 2007-05-07  
学习....

相关推荐

Global site tag (gtag.js) - Google Analytics