索尼官网ps4的ps4破解了吗

当前位置:&&&&&&&&&
小编游话说:PS4这次真的破解了!你会不会买呢?
来源:QQ看点&|& 09:33&编辑:冯颖
这几天圈的一件大事莫过于国内有网友宣称自己成功破解了索尼PS4主机,为了进一步证实自己的说法,他还放上了一张破解新片的照片。并称此款破解芯片能够支持市面上包括PRO在内的PS4机型,并且支持联网支持最新4.71系统。如此强大的破解的芯片,仅售价42.5美刀。
随后在国内某购物网站搜索也能发现不少商家已经上架了&破解版PS4&的商品,在商品介绍中称只需一次性支付一款游戏(300元)的价格就可以畅玩几十款3A大作!对此,你怎么看?
二狗:当然不会买啦,从一般用户的角度来看,目前破解版的PS4肘制多不说,而且并不是技术层面的破解而是绕开了加密另辟蹊径,这种破解方式笨拙不说,也有很大几率在下一个补丁里被索尼封堵,所以冒着这种风险去买破解版PS4显然赌博成分太大了。其次,破解版只是单纯的可以叫你玩游戏而已,姑且不说这个能玩所需要做的各种操作和前戏,破解版的问题还在于他会剥夺你一些正常玩游戏的一些乐趣和成就感,这并不是一件好事情。最后,小编我花钱买的正版游戏都还一大堆没玩通的,哪有那个时间和精力去看盗版的啊??!!!
Flameglory:在这个游戏越来越普及的年代,PS4被破解从游戏群体来说并不是一件特别糟糕的事。从目前大陆国行主机来说,PS4的普及率可谓少的可怜,并不像现在的PC这般火爆。由目前steam的国区玩家占有比来看,国内市场已经非常大了。这不仅归功于用户们的正版意识越来越强,更少不了PC游戏可以&免费&玩这个因素。所以,主机爱好者也不必太过杞人忧天,抱怨好不容易养起的市场将被打破,事物永远都是进步的,当越来越多的玩家爱上主机以后,会做出他们自己的选择。
瓶子:小编平时主要就玩Steam游戏,不是不喜欢主机游戏,就是工作之后,Steam库中被G胖打折安利的游戏很多都没有时间玩(《合金装备5:幻痛》都躺半年了,《黑魂3》古达还没过,《巫师3》还没时间二周目,夏季促销又被G胖&&),所以感觉就没必要再去买主机,玩主机游戏了,所以买不买也就不关咱的事啦,让编辑部那群主机党讨论去吧,我就是个吃瓜群众来打酱油的。
外星人克劳德:我觉得散装光盘也是一种宣传,玩家在没有足够的经济能力时,买散装光盘我觉得也并没有那么可耻,毕竟也是抱着对游戏的热情才会去买的。如果散装光盘真的对游戏开发商产生了影响,那开发商应该也可以通过多种途径来解决这类问题,作为玩家也没必要那么多虑了。
周老师:PS4破解了,你会买吗?这样的问题,我想所有中国玩家看到以后,马上就已经有了答案(笑)。但小编我必须马上说出我的立场,那就是我坚决不买!为什么?别跟我扯什么知识产权、破解不要钱之类的无聊问题!最重要的原因是:其实小编我是索尼派往游侠的&终极卧底&,游侠小编只是我的表面工作,我真正的身份是&索尼王牌推销员&!作为索尼的推销员,我当然无法容忍破解版这种伤害大法利益的事情了,所以我坚决抵制!全世界的索粉,联合起来吧,让我们高喊一声:盗版狗可耻!索尼大法好!
女装大佬PX_H:当然不会!作为一个专职中介贩售二手PS4的索粉小编(?),怎么会买这种破解主机呢!说实话,如此破解的主机,与上淘宝租借游戏有特别大的区别吗?多花1000多买到一堆自己不想要的游戏又是何必呢?最后,连自己喜爱的游戏都不掏钱购买,怎么能追到女朋友?
下一篇:没有了
的相关阅读:
窗花有话说
网友评论仅供其表达个人看法,并不表明深窗立场。
深窗公众平台查看: 5807|回复: 4
关于非索尼手机的破解版Remote Play的问题
在线时间585 小时
阅读权限70
帖子猥币巴士票
猥然不动 Lv.7, 积分 8502, 距离下一级还需 1498 积分
本帖最后由 DmC-- 于
12:48 编辑
& &我的手机 平板都安装了破解版的Remote Play都能与PS4连接,但是都用不了手柄。有人说要蓝牙直接连接手柄但是我试了很多次都搜索不到手柄(SHARE+HOME都是搜索不到)。
& &手柄直连PS4 手机 平板只做画面输出就可以用手柄,但是用不了PSN主号。有人说创建小号用小号来连接再用手柄来切换主号理论上是可以的,但是我出现的问题是小号连接手柄不会断开一样正常操作,但是主号连接手柄就会断开,只有小号可以连接手柄。有大神知道这两个问题的原因吗?
& &另外我也附上这个破解版的软件希望其他网友能帮忙试一下。这个是不需要ROOT的,安装了就可以用,PS4和手机要同一个PSN账号才可以连接,只要是安卓系统的都可以。我下载的时候有写到最低版本是4.4但是我手机系统是4.1也一样可以用,所以版本应该是不重要的
& &破解版的Remote Play&&
猥币141331
在线时间3948 小时
阅读权限100
帖子猥币巴士票
没有使用过
猥币243236
在线时间883 小时
阅读权限90
帖子猥币巴士票
猥震海内 Lv.9, 积分 50320, 距离下一级还需 9680 积分
我的Z2手机完全胜任,你的应该是没有默认出手机做手柄,只认你的原手柄,所以第二个账号把第一个顶掉了,手柄自然认证第二个开启,用在了第二个账号,第一个失效
在线时间585 小时
阅读权限70
帖子猥币巴士票
猥然不动 Lv.7, 积分 8502, 距离下一级还需 1498 积分
战争与和平 发表于
我的Z2手机完全胜任,你的应该是没有默认出手机做手柄,只认你的原手柄,所以第二个账号把第一个顶掉了,手 ...
要怎样做才可以主账号用手柄
猥币243236
在线时间883 小时
阅读权限90
帖子猥币巴士票
猥震海内 Lv.9, 积分 50320, 距离下一级还需 9680 积分
这个不好搞,要么就买个手柄两个手柄,要么就是买个Z3手机,因为现在索尼在PS4领悟防盗版做的很严谨,一直很怕周边设备破解。
白金新手【普通成就】
获得白金数量达到10个,,包含PS4、PSV以及PS3上面所获得数量
Lucky☆Star【稀有成就】
什么!你在发完申请贴截图的时候没被人撒云?实在是太幸运了,让我抱抱你的大腿吧!(规则改为:总积分正好=或777777)
快看我中奖了【稀有成就】
啦啦啦我中奖咯!我告诉你这事儿是要刷脸的,谁叫我生得一张天生中奖的脸呢咩哈哈哈~(参与论坛正版游戏抽奖并成功抽中)
水元素【普通成就】
水、H2O、みず、water,额...总之怎么叫都行了
(累计发帖1000即可解锁)
常客【普通成就】
《我的业余生活》从前有一个论坛叫TGBUS…(在线时间超过1000小时)
Powered by|  
|  
|  
|  
|  
只需一步,快速开始
查看: 1633|回复: 7
索尼PS4游戏主机遭破解 运行Linux成功变电脑
主题帖子积分
nepnepnepne
贡献度125307
金元627356
来源:凤凰游戏
索尼PS4遭破解运行Linux据外媒报道,日前主机破解组织Fail Overflow对PS4进行了破解,并成功进入了其内核运行了Lunix系统。对此,索尼目前尚未置评。新时代游戏主机PS4和Xbox One,由于采用了AMD处理器方案,因此从本质上来看它们是计算机,因此一些硬件发烧友会尝试破解这些主机。主机破解组织FailOverflow近期对PS4进行了破解,在PS4上成功安装了一个版本的Linux。这使PS4能运行自制软件,成为了真正的PC。在PS4的硬件设计中,索尼采用了类似于PC的架构。而目前,PS4终于可以运行台式机系统。FailOverflow的工作不仅限于对Linux的移植。该公司还在PS4上成功加载了GBA模拟器,并制作了“PS版本”的《口袋妖怪》。GBA模拟器尤其值得关注,因为FailOverflow将一台真实的GBA连接至PS4,作为手柄。当然,这并不是玩GBA游戏的最佳方式。但这也表明,FailOverflow已充分掌握了PS4的系统。其实在PS4上运行Linux还不算最疯狂。早前还有报道称,PS3上曾出现过一项名为“其他操作系统”的功能,使任何人都可以在PS3上加载Linux或其他操作系统。
主题帖子积分
游戏狂人, 积分 1803, 距离下一级还需 197 积分
游戏狂人, 积分 1803, 距离下一级还需 197 积分
索尼放出来的,他PS4钱赚的差不多了,是时候出PS5了。& &PS4出了两年多了吧
主题帖子积分
游戏精英, 积分 5783, 距离下一级还需 3217 积分
游戏精英, 积分 5783, 距离下一级还需 3217 积分
mnbvcxz87 发表于
索尼放出来的,他PS4钱赚的差不多了,是时候出PS5了。& &PS4出了两年多了吧
主题帖子积分
游戏精英, 积分 5424, 距离下一级还需 3576 积分
游戏精英, 积分 5424, 距离下一级还需 3576 积分
最主要绝体绝命4出4还是5.
主题帖子积分
新手玩家, 积分 8, 距离下一级还需 22 积分
新手玩家, 积分 8, 距离下一级还需 22 积分
厉害,不过这破解其实不全面哦
主题帖子积分
游戏精英, 积分 4676, 距离下一级还需 4324 积分
游戏精英, 积分 4676, 距离下一级还需 4324 积分
这个根本就没有用这个不是PS4游戏破解,这只是能够强制运行硬件商原本是不支持的第三方软件罢了,要知道3DS都能运行Win95系统了然而并没有什么软用并不能运行win95游戏
主题帖子积分
nepnepnepne
贡献度125307
金元627356
caoqinglulu 发表于
这个根本就没有用这个不是PS4游戏破解,这只是能够强制运行硬件商原本是不支持的第三方软件罢了,要知道3DS ...
其实代表了PS4处理指令的方式已经被掌握,破解组织可以在没有技术支持、无授权的状态下开发可以在PS4上运行的程序,也能反过来在PC硬件系统上创建PS4虚拟机(当然和pc虚拟机一样,相当耗资源,大游戏肯定运行不了。)
主题帖子积分
贡献度7547
金元131003
PS4相对于PS3来说 破解要简单一点,但是这并不是指PS4容易破解,而是PS3那反人类的架构太离谱。从目前看来 多人联机已经形成主流,PS4的破解并不会达到PS3那时的效果,更别说PS2 PS1了。
普通用户组专属勋章,用户等级到达骨灰玩家,在勋章界面自助申请。
普通用户组专属勋章,用户等级到达游戏天王,在勋章界面自助申请。
普通用户组专属勋章,用户等级到达游戏圣者,在勋章界面自助申请。
普通用户组专属勋章,用户等级到达游戏之神,在勋章界面自助申请。
不思議の國
歷史記憶(暂不发放)
萌之委员会
旧版萌之委员会(暂不发放)
3DM硬件资讯组
3DM硬件资讯组成员专属
参加论坛任意活动中大奖两次以上。
妹子认证(已下架)
3DM女性会员专属勋章(不在接受申请。请申请新版)
3DM论坛死忠专属勋章。
Powered by天极传媒:天极网全国分站
您现在的位置:
索尼PS4疑似遭破解 官方给出隔离警告Yesky天极新闻 07:08
  【天极网IT新闻频道】【Yesky新闻频道消息】PS4在巴西已获得破解?在数周前,巴西一些商店就开始打出招牌,贩卖破解后的PS4游戏,只要300雷亚尔(巴西货币,约合人民币600元左右)就可以往玩家的PS4里拷10款游戏,媒体已通过黑客行业的内部人士和巴西当地造访这些游戏商店的玩家了解到确有此事。
索尼PS4疑似遭破解 官方给出隔离警告
  昨天,巴西一家可靠网站UOL Jogos的记者用自己的主机进行了,证明破解是成功的,而且这不是通过“账号分享”的招数,而是全新的破解手段。破解的原理大概是用一台安装了大量游戏的正版主机,通过Dump的手段拷贝到另外一台主机的上,不过UOL记者提到,他们最后玩到手的时候PS4上登陆了两个账号,这应该是游戏拷贝过程中的必备步骤,而且之后想运行游戏也必须登陆第二个账号。
  UOL记者介绍说,这个破解手段最初似乎来自俄国网站,但无从考证,此前的破解方式也差不多是这样,不过目前来看至少还无法让玩家任意利用,只是商家暂时以此营利。
  索尼官方目前已就此提出了正式警告,要求玩家不要随意使用破解后的游戏,否则可能会被BAN掉,可以想象索尼应该会尽快修补这一漏洞,阻止破解散装的蔓延。
索尼PS4疑似遭破解 官方给出隔离警告
(作者:熊伟责任编辑:熊伟)
IT新闻微信公众平台
第一时间获取新鲜资讯
使用手机扫描左方二维码
您可能想看的内容
大家都在看
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
CES2018每日看点汇总0111:首款国产柔性显示屏、LG智能音箱T…
一位接近ofo内部人士透露,1月10日发薪后,ofo公司账户上的可用资…
CES2018每日看点汇总0110:主场馆LVCC突然停电,苏宁无人店…
一张图读懂CES2018开幕第一天:3C产品回归主场!其中包括vivo…
CES2018展会上,vivo正式展出了屏下指纹识别手机,真正的全面屏…
一张图看懂CES2018首日黑科技,其中包括三星、LG、英特尔、海信、…
一张图读懂CES2018开幕第一天:3C产品回归主场!其中包括vivo…
CES2018每日看点汇总0111:首款国产柔性显示屏、LG智能音箱T…
CES2018每日看点汇总0110:主场馆LVCC突然停电,苏宁无人店…
英伟达宣布全球首个自动机器处理器DRIVE Xavier,并与320+…
今天,国内知名无人机厂商大疆正式发布了2款云台产品:灵眸OSMO手机云…
蚂蚁金服回应称,蚂蚁借呗部分用户被清退资格、被准入或降低/提高额度,都…
朱叶青希望从探究早期筛查领域入手,在最为重要的早期布局阶段便抢得先机。
小蓝单车、滴滴发布公告称,近期小蓝单车将托管给滴滴出行。并非之前传闻的…
天极网IT新闻汇:滴滴正式托管小蓝单车业务,拖欠押金可转换为滴滴出行出…
每日IT极热索尼PS4破解之用户层代码执行 - FreeBuf.COM | 关注黑客与极客
索尼PS4破解之用户层代码执行
共153250人围观
,发现 4 个不明物体
自从我之前写的那篇有关发布一来,我又有了一些新的发现。这得益于此我现在能够在WebKit进程中进行代码执行。虽然我还不想发布我的代码执行解决方案,但是我目前使用的已经开源,如果有兴趣你可以去看看。
ROP只是以一种聪明的方法执行现有的加载到内存中的代码,同时在技术上来讲ROP是一种图灵完全性(),相对于一些基础测试它更加复杂且不太实用。
在flatz的帮助下,我可以利用ROP来设置内存,这样我便能够写入我自己的代码并执行它。简单来说,这就意味着我可以编译C代码,比如,并将其作为本机的x86_64代码执行。我们仍然是在网络浏览器下进行运行,同样存在与之前文章中提到的限制(像沙盒等)。
注:基于最近发布的,如果我们将-target x86_64-scei-ps4指定为clang,那么我们就可以像索尼官方在PS4中使用的编译代码一样进行编译。
WebKit进程限制
在我之前的文章中曾提过,这个网络浏览器实际上是由两个独立的进程构成。其中我们进行劫持代码执行的那一个是核心WebKit进程(例如处理解析HTML和CSS,解码图片,执行JavaScript)
我们可以使用如下代码转储所有内存:
struct&memoryRegionInfo&
struct&otherMemoryRegionInfo&otherI
void&*m&=&NULL;
//&Iterate&over&first&107&memory&mappings
for(i&=&0;&i&&&107;&i++)&{
//&Find&base&of&next&mapping
getOtherMemoryInfo(m,&1,&&otherInfo);
//&Get&more&info&about&this&mapping
getMemoryInfo(otherInfo.base,&&info);
//&If&readable,&dump&it
if(info.flags&&&PROT_CPU_READ)&{
sceNetSend(sock,&info.base,&info.end&-&info.base,&0);
在这个转储中,你可能无法通过其他进程找到诸如&Options&, &Close Window&, &Refresh&,或者&There is not enough free system memory&字符串。
主要的影响非常明确:如果其他的进程处理显示图形,我们无法轻易的劫持活跃的libSceVideoOut
我与一直在尝试重新初始化libSceVideoOut,尽管所有的函数都返回了一个让我们满意的值,我们依旧无法从浏览器视图中获取屏幕改变。
为了确认我们的进程无法访问任何现有由其他进程创建的视频处理,我们尝试brute forcing所有正整数来验证是否都是有效的。
Brute forcing代码执行
Brute forcingROP框架非常不现实。我依靠对每个测试重定向之后,以及exploit不是100%有效,brute forcer可能会被卡住大概1分钟时间。
我们可以使用sockets追踪来自PC的远程进程,如果接收到一个无效的处理或者0,sceVideoOutWaitVblank会返回一个错误,如果其接收到一个正确的处理:
for(i&=&0;&i&&&0x7FFFFFFF;&i++)&{
if(!sceVideoOutWaitVblank(i))&return&i;
if(i&%&0x10000&==&0)&debug(sock,&&At&%08x\n&,&i);
sceNetSocketClose(sock);
运行之后它会返回0,确认我们的进程没有访问其他进程的视频处理。
如果我们创建一个HTML5 canvas标签并填充单个颜色,我们可以找到在RAM中的framebuffer地址,并从本机代码中创建一个新线程进行渲染,舍弃原线程正常更新canvas。
在PS4-SDK我添加了,有心的朋友可以看看。
如果canvas的分辨率过高,是很难找到它的地址的,且通常刷新率很低。然而,我们可以将一张低分辨率图片延展全屏,这样可以完美解决:
var&body&=&document.getElementsByTagName(&body&)[0];
//&Create&canvas
var&canvas&=&document.createElement(&canvas&);
canvas.id&=&&canvas&;
canvas.width&=&160;
canvas.height&=&144;
canvas.style.zIndex&=&1;
canvas.style.position&=&&absolute&;
canvas.style.border&=&&1px&solid&;
//&Centered
//canvas.style.left&=&((window.screen.width&-&canvas.width)&/&2).toString()&+&&px&;
//canvas.style.top&=&((window.screen.height&-&canvas.height)&/&2).toString()&+&&px&;
//&Fullscreen
canvas.style.left&=&&0px&;
canvas.style.top&=&&0px&;
canvas.style.width&=&&100%&;
canvas.style.height&=&&100%&;
body.appendChild(canvas);
在创建画布之前,你一定很想把其他元素都删除掉,来提高一丝丝的效率:
while(body.firstChild)&{
body.removeChild(body.firstChild);
最后你会想隐藏光标:
document.body.style.cursor&=&&none&;
libScePad模块类似libSceVideoOut,但不是由我们的进程进行控制,所以我们无法让其工作。
除非你事先就调用了scePadInit,不然调用scePadOpen会返回一个错误。这里我们得知每个单独的进程模块都有属于他们自己的内部状态,并且我们的进程无法使用libScePad(因为其还没有初始化)
所以,和图形一样我们不能劫持任何已经打开的处理,也无法。或许我们也无法从控制器中读取内容,因为它已经在使用了。那么我们就尝试从第二个控制器中读取内容,但不幸的是,我只有一个控制器所以无法进行测试了。
对此有两个解决方案:使用USB库接收来自第三方控制器的输入,或仅仅使用WIFI兼容设备以及按钮通过一个UDP socket发送输出,我选择使用任天堂DS无线版本。
当你将USB插入PS4,新设备会显示在/dev/:&ugen0.4显示第一个位置,ugen0.5显示第二个位置。
不幸的是,由于mount系统调用(类似于nmount变化)一直返回1,EPERM,所以我们无法挂载设备。然而,我们可以使用libSceUsbd.sprx模块访问USB闪存,这与十分相似。
以下为libusb代码:
libusb_context&*
libusb_init(&context);
libusb_exit(context);
会转换为libSceUsbd代码:
sceUsbdInit();
sceUsbdExit();
这是一个底层库向USB设备直接发送命令,对于我们而言这不太实用。在xerpi的帮助下,我们可以port&libusb到PS4,并切能够。
同时在未来我们可以port一个完整的FAT实现基于USB的直接命令,现在我仅仅是使用(类似Linux的dd)写入我的数据作为USB闪存设备的原始镜像。
是我之前写的一个GameBoy模拟器。虽然在这里它不是一个最好的GameBoy模拟器,但是我认为他足够有能力port到PS4来显示网络浏览器的代码执行。
我尝试考虑其他进程之间的交互,这样我们的选择就变得更多了,但是还没想到。
fork(2)系统调用是被禁止的,所以我们不能创建新的进程。execve(59)系统调用开着的,在libSceSystemService.sprx中调用了sceSystemServiceLoadExec函数,但是因为文件系统只读限制,我们无法进行测试,并且不能安装USB闪存驱动器。同时还被告知,这里只接受加密的文件。
libc函数getprocname返回一个空字符串。
无法找到任何函数。
chroot(61)系统调用同样被进制。
root的困惑
在之前的文章中我提到getlogin返回&root&,同时username可能为root,但我不相信这是我们口中经常谈论的那个root。例如在这个所谓的root用户下,getuid一直返回0。但是实际上正常的root用户是返回1的。
之前我还演示我们的进程运行在一个FreeBSD jail中,这里我不确定进程是否是在root权限下运行。对于FreeBSD用户我不太了解,以及jails是怎么回事。但是我知道索尼弄一个没有root权限的root用户,完全是在嘲讽我们!
我们可以从libkernel中使用sceKernelLoadStartModule加载模块:
int&libPad&=&sceKernelLoadStartModule(&libScePad.sprx&,&0,&NULL,&0,&0,&0);
模块加载到内存中后,我们可以读取它的base,size并且像之前那样转储。这个加载模块的方法,事实上你可以在其中调用函数,并在转储中遵循其他类似libc和libkernel模块xrefs。该函数也让我们转储几个的模块
从函数名寻找函数偏移量
FreeBSD使用系统调用337,,从其命名的一个动态库中定位函数地址。
在C中,可以这样使用:
struct&kld_sym_lookup&
data.version&=&sizeof(struct&kld_sym_lookup);
data.symname&=&&getpid&;
if(kldsym(libKernel,&KLDSYM_LOOKUP,&&data)&==&0)&{
printf(&%p\n&,&data.symvalue);
printf(&%d\n&,&data.symsize);
然而在PS4内核这个功能被禁用,并且总是返回0x4e,&ENOSYS.这是因为索尼创建了自定义系统调用模块,为了替代kldsym我们可以用系统调用591(他们的工作都差不多,而且这个要简单些)这个系统调用是PS4-SDK的基础,一旦我们加载一个模块并获取其处理,我们可以调用已知名称和参数的任何函数。
以下ROP链将获取libkernel中的getpid偏移量:
var&result&=&chain.
var&name&=&chain.data&+&8;
writeString(name,&&getpid&);
chain.syscall(&getFunctionAddressByName&,&591,&LIBKERNEL,&name,&result);
chain.execute(function()&{
logAdd(readString(name)&+&&&libkernel&offset&=&0x&&+&(getU64from(result)&-&module_infos[LIBKERNEL].image_base).toString(16));
对于固件版本1.76,它的返回值为0xbbb0,我们可以从libkernel转储中验证该偏移量(20为getpid系统调用数字)
BBB0&getpid&&&&&&&&&&proc&near
BBB0&&&&&&&&&&&&&&&&&mov&&&&&rax,&20
BBB7&&&&&&&&&&&&&&&&&mov&&&&&r10,&rcx
BBBA&&&&&&&&&&&&&&&&&syscall
BBBC&&&&&&&&&&&&&&&&&jb&&&&&&short&loc_BBBF
BBBE&&&&&&&&&&&&&&&&&retn
BBBF&;&---------------------------------------------------------------------------
BBBF&loc_BBBF:
BBBF&&&&&&&&&&&&&&&&&lea&&&&&rcx,&sub_DF60
BBC6&&&&&&&&&&&&&&&&&jmp&&&&&rcx
BBC6&getpid&&&&&&&&&&endp
用其他函数名来试试,你需要使用反汇编程序的字符串视图来查看(或者在十六进制编辑器搜索sce)。你可以看到索尼在许多方法中都留下了一些有用的debug信息。
例如libkernel包含了&verify_header: sceKernelPread failed %x\n&字符串,既然我们已经确认了sceKernelPread函数,我们来猜猜sceKernelPwrite等是否也存在。
不幸的是,sceKernelPread和sceKernelPwrite没啥亮点,他们只是与系统调用相关的普通FreeBSD文件包装器。
在过去的几年索尼一直都在使用他的这种命名方式,你也可以尝试使用一些,对于PS4的模块来说其中有些也是能够使用的。
有趣的是我们创建的一个线程在后台可以继续运行,同时其他应用也在活跃着。为了证明这点,我们可以创建一个在任意超时后启动网络浏览器的线程
int&(*sceSystemServiceLaunchWebBrowser)(const&char&*uri,&void&*);
void&*t(void&*n)&{
sceKernelSleep(10);
sceSystemServiceLaunchWebBrowser(&http://google.com/&,&NULL);
return&NULL;
int&_main(void)&{
initKernel();
initLibc();
initPthread();
int&libSceSystemS
loadModule(&libSceSystemService.sprx&,&&libSceSystemService);
RESOLVE(libSceSystemService,&sceSystemServiceLaunchWebBrowser);
ScePthread&
scePthreadCreate(&thread,&NULL,&t,&NULL,&&t&);
读取内存保护
我们可以使用两个索尼自定义的系统调用547和572,来读取一个内存页面的内容(16KB),包括它的保护:
function&getStackProtection()&{
var&info&=&chain.
chain.syscall(&getMemoryInfo&,&547,&stack_base,&info);
chain.execute(function()&{
var&base&=&getU64from(info&+&0x0);
var&size&=&getU64from(info&+&0x8)&-&
var&protection&=&getU32from(info&+&0x10);
logAdd(&Stack&base:&0x&&+&base.toString(16));
logAdd(&Stack&size:&0x&&+&size.toString(16));
logAdd(&Stack&protection:&0x&&+&protection.toString(16));
function&getStackName()&{
var&info&=&chain.
chain.syscall(&getOtherMemoryInfo&,&572,&stack_base,&0,&info,&0x40);
chain.execute(function()&{
var&base&=&getU64from(info&+&0x0);
var&size&=&getU64from(info&+&0x8)&-&
var&name&=&readString(info&+&0x20);
logAdd(&Stack&base:&0x&&+&base.toString(16));
logAdd(&Stack&size:&0x&&+&size.toString(16));
logAdd(&Stack&name:&&&+&name);
以上代码向我们展示了堆栈名为&main stack&以及它的保护是3(读和写)
列出所有内存页
由于ASLR(所有内容都是随机的),我们之前很难映射PS4的内存。
幸运的是,现在我们可以绕过它了:如果系统调用572的第二个参数被设置为1,我们指定一个地址(非映射),那么下一个内存页也就被使用了。这就是说,我们可以指定任意地址并找到一个有效的内存页面。例如指定0作为地址,就会告诉我们第一个映射内存页面的内容:
var&info&=&chain.
chain.syscall(&getOtherMemoryInfo&,&572,&0,&1,&info,&0x40);
chain.execute(function()&{
var&base&=&getU64from(info&+&0x0);
var&size&=&getU64from(info&+&0x8)&-&
var&name&=&readString(info&+&0x20);
logAdd(&First&page&base:&0x&&+&base.toString(16));
logAdd(&First&page&size:&0x&&+&size.toString(16));
logAdd(&First&page&name:&&&+&name);
使用它我们可以从我们的进程提取一个内存页面访问完整列表:
Name&&&&&&&&&&&&&&&&&&&&&&&&&&&&Address&&&&&&&&&Size&&&&&&&&Protection
executable&&&&&&&&&&&&&&&&&&0x&&&&&&0x4000&&&&&&0x5
executable&&&&&&&&&&&&&&&&&&0x&&&&&&0x4000&&&&&&0x3
anon:&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
anon:00081baf2243&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:00081add693a&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:00081baf22d6&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:00081add739e&&&&&&&&&&&0x&&&&&0x100000&&&&0x3
anon:00081add6ad2&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:00081add6ad2&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
anon:0e&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
anon:00081add739e&&&&&&&&&&&0x&&&&&0x100000&&&&0x3
anon:0&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
anon:0&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x1
anon:00081add739e&&&&&&&&&&&0x&&&&&0x300000&&&&0x3
stack&guard&&&&&&&&&&&&&&&&&0x7ef788000&&&&&0x4000&&&&&&0x0
JavaScriptCore::BlockFree&&&&&&&0x7ef78c000&&&&&0x10000&&&&&0x3
stack&guard&&&&&&&&&&&&&&&&&&&&&0x7ef79c000&&&&&0x4000&&&&&&0x0
RscHdlMan:Worker&&&&&&&&&&&&&&&&0x7ef7a0000&&&&&0x10000&&&&&0x3
stack&guard&&&&&&&&&&&&&&&&&&&&&0x7ef7b0000&&&&&0x4000&&&&&&0x0
SceWebReceiveQueue&&&&&&&&&&&&&&0x7ef7b4000&&&&&0x10000&&&&&0x3
stack&guard&&&&&&&&&&&&&&&&&&&&&0x7ef7c4000&&&&&0x4000&&&&&&0x0
SceFastMalloc&&&&&&&&&&&&&&&&&&&0x7ef7c8000&&&&&0x10000&&&&&0x3
stack&guard&&&&&&&&&&&&&&&&&&&&&0x7ef7d8000&&&&&0x4000&&&&&&0x0
sceVideoCoreServerIFThread&&&&&&0x7ef7dc000&&&&&0x10000&&&&&0x3
(NoName)WebProcess.self&&&&&&&&&0x7ef7ec000&&&&&0x4000&&&&&&0x0
main&stack&&&&&&&&&&&&&&&&&&&&&&0x7ef7f0000&&&&&0x200000&&&&0x3
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0x7ef9f0000&&&&&0x4000&&&&&&0x5
libSceRtc.sprx&&&&&&&&&&&&&&&&&&0x802ccc000&&&&&0x4000&&&&&&0x5
libSceRtc.sprx&&&&&&&&&&&&&&&&&&0x802cd0000&&&&&0x4000&&&&&&0x3
libSceSystemService.sprx&&&&&&&&0x&&&&&0x14000&&&&&0x5
libSceSystemService.sprx&&&&&&&&0x&&&&&0x4000&&&&&&0x3
libSceSystemService.sprx&&&&&&&&0x&&&&&0x8000&&&&&&0x3
libSceSysmodule.sprx&&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x5
libSceSysmodule.sprx&&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
libkernel.sprx&&&&&&&&&&&&&&&&&&0x&&&&&0x34000&&&&&0x5
libkernel.sprx&&&&&&&&&&&&&&&&&&0x&&&&&0x2c000&&&&&0x3
libSceRegMgr.sprx&&&&&&&&&&&&&&&0x80a520000&&&&&0x4000&&&&&&0x5
libSceRegMgr.sprx&&&&&&&&&&&&&&&0x80a524000&&&&&0x4000&&&&&&0x3
libSceSsl.sprx&&&&&&&&&&&&&&&&&&0x80d1c0000&&&&&0x48000&&&&&0x5
libSceSsl.sprx&&&&&&&&&&&&&&&&&&0x80d208000&&&&&0x8000&&&&&&0x3
libSceOrbisCompat.sprx&&&&&&&&&&0x80f648000&&&&&0x15c000&&&&0x5
libSceOrbisCompat.sprx&&&&&&&&&&0x80f7a4000&&&&&0x38000&&&&&0x3
libSceOrbisCompat.sprx&&&&&&&&&&0x80f7dc000&&&&&0x4000&&&&&&0x3
libSceLibcInternal.sprx&&&&&&&&&0x&&&&&0xd0000&&&&&0x5
libSceLibcInternal.sprx&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
libSceLibcInternal.sprx&&&&&&&&&0x&&&&&0x18000&&&&&0x3
libScePigletv2VSH.sprx&&&&&&&&&&0x&&&&&0x74000&&&&&0x5
libScePigletv2VSH.sprx&&&&&&&&&&0x&&&&&0x2c000&&&&&0x3
libSceVideoCoreServerInterface.&0x&&&&&0xc000&&&&&&0x5
libSceVideoCoreServerInterface.&0x&&&&&0x4000&&&&&&0x3
libSceWebKit2.sprx&&&&&&&&&&&&&&0x81ac44000&&&&&0x2414000&&&0x5
libSceWebKit2.sprx&&&&&&&&&&&&&&0x81d058000&&&&&0x148000&&&&0x3
libSceWebKit2.sprx&&&&&&&&&&&&&&0x81d1a0000&&&&&0xbc000&&&&&0x3
libSceIpmi.sprx&&&&&&&&&&&&&&&&&0x81da60000&&&&&0x14000&&&&&0x5
libSceIpmi.sprx&&&&&&&&&&&&&&&&&0x81da74000&&&&&0x14000&&&&&0x3
libSceMbus.sprx&&&&&&&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x5
libSceMbus.sprx&&&&&&&&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
libSceCompositeExt.sprx&&&&&&&&&0x&&&&&0x8000&&&&&&0x5
libSceCompositeExt.sprx&&&&&&&&&0x&&&&&0x44000&&&&&0x3
libSceNet.sprx&&&&&&&&&&&&&&&&&&0x82ccdc000&&&&&0x1c000&&&&&0x5
libSceNet.sprx&&&&&&&&&&&&&&&&&&0x82ccf8000&&&&&0x14000&&&&&0x3
libSceNetCtl.sprx&&&&&&&&&&&&&&&0x833f1c000&&&&&0x8000&&&&&&0x5
libSceNetCtl.sprx&&&&&&&&&&&&&&&0x833f24000&&&&&0x4000&&&&&&0x3
libScePad.sprx&&&&&&&&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x5
libScePad.sprx&&&&&&&&&&&&&&&&&&0x&&&&&0x8000&&&&&&0x3
libSceVideoOut.sprx&&&&&&&&&&&&&0x83afe4000&&&&&0xc000&&&&&&0x5
libSceVideoOut.sprx&&&&&&&&&&&&&0x83aff0000&&&&&0x4000&&&&&&0x3
libSceSysCore.sprx&&&&&&&&&&&&&&0x83cdf4000&&&&&0x8000&&&&&&0x5
libSceSysCore.sprx&&&&&&&&&&&&&&0x83cdfc000&&&&&0x4000&&&&&&0x3
SceLibcInternalHeap&&&&&&&&&&&&&0x&&&&&0x10000&&&&&0x3
SceKernelPrimaryTcbTls&&&&&&&&&&0x&&&&&0x4000&&&&&&0x3
SceVideoCoreServerInterface&&&&&0x&&&&&0x4000&&&&&&0x3
SceLibcInternalHeap&&&&&&&&&&&&&0x&&&&&0xc0000&&&&&0x3
SceLibcInternalHeap&&&&&&&&&&&&&0x880a5c000&&&&&0x20000&&&&&0x3
SceLibcInternalHeap&&&&&&&&&&&&&0x880a7c000&&&&&0x490000&&&&0x3
SceLibcInternalHeap&&&&&&&&&&&&&0x880f0c000&&&&&0x470000&&&&0x3
anon:&&&&&&&&&&&&&&&0x&&&&&0x100000&&&&0x3
anon:d&&&&&&&&&&&&&&&0x&&&&&0xx3
anon:00080f64aaa5&&&&&&&&&&&&&&&0x&&&&&0x4000000&&&0x5
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x118a000000&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x118c000000&&&&0x200000&&&&0x33
CompositorClient&&&&&&&&&&&&&&&&0x118e000000&&&&0x200000&&&&0x33
CompositorClient一直在0×,但其他地址每次都不同。
提取的这个列表跟我们的预期完全一致,但CompositorClient映射到0×33,这绝对不是FreeBSD标准内存保护
由于CPU和GPU共享一个的内存池,索尼在GPU控制器中添加自己的保护标志,使得GPU能够保持FreeBSD标准保护CPU,可以通过逆向libSceGnmDriver模块中找到:
CPU&Read&-&1
CPU&Write&-&2
CPU&Execute&-&4
GPU&Execute&-&8
GPU&Read&-&16
GPU&Write&-&32
CompositorClient被标记为0×33&(1 | 2 | 16 | 32),CPU RW和GPU RW
索尼对GPU的保护处理的非常不错:
//&Give&GPU&read&and&write&access&to&stack:
chain.syscall(&mprotect&,&74,&stack_base,&16&*&1024&*&1024,&1&|&2&|&16&|&32);
//&Give&GPU&read&and&execute&access&to&WebKit2&module:
chain.syscall(&mprotect&,&74,&module_infos[WEBKIT2].image_base,&16&*&1024&*&1024,&1&|&4&|&16&|&8);
尝试绕过DEP,失败:
//&Give&GPU&read&and&execute&access&to&stack:
chain.syscall(&mprotect&,&74,&stack_base,&16&*&1024&*&1024,&1&|&2&|&16&|&8);
//&Give&GPU&read&and&write&access&to&WebKit2&module:
chain.syscall(&mprotect&,&74,&module_infos[WEBKIT2].image_base,&16&*&1024&*&1024,&1&|&4&|&16&|&32);
这里有一个名为libSceRegMgr.sprx的模块,它表明索尼向PS4增加了某些类型的注册表系统。
模块中的所有函数包装为系统调用532,之前我们以为是一个;其第一个参数为一条命令。事实上wait6已经覆盖了索尼的一个自定义系统调用,我开始坚信这个系统调用编号与FreeBSD 9.0标准肯定不同。虽然这个模块加载并在网络浏览器中使用,限制我们的进程;所有函数调用返回0×,Sony等效于EPERM
最近我给PS4-Playground增加了一个,使用代码执行,文件转储变得更加轻松。也可以单独使用ROP,但是挺麻烦的,需要更多步骤来完成这项任务。通过使用PS4文件浏览器,你可以找到并转储许多有趣的东西,我就转储了/sandboxDir/common/font/DFHEI5-SONY.ttf
如果你想要转储的文件路径是从10个随机字符串(沙盒目录)开始,那你需要注意每次重启PS4这个路径是会改变的。你可以使用ROP链去寻找:
setU64to(chain.data,&11);
chain.syscall(&getSandboxDirectory&,&602,&0,&chain.data&+&8,&chain.data);
chain.write_rax_ToVariable(0);
chain.execute(function()&{
var&name&=&readString(chain.data&+&8);
logAdd(name);
对我来说这是AaQj0xlzjX.对于非常小的文件,你只需读入chain.data。但对于大文件,你需要指定内存,我们可以通过mmap系统调用标准来完成,刷新页面,使用这个链:
chain.syscall(&mmap&,&477,&0,&0x&|&2,&4096,&-1,&0);
chain.write_rax_ToVariable(0);
chain.execute(function()&{
chain.logVariable(0);
在本例中,返回的地址是0×.
再次刷新页面,使用这个链读取文件并获取大小,使用你的沙盒目录替换AaQj0xlzjX:
writeString(chain.data,&&/AaQj0xlzjX/common/font/DFHEI5-SONY.ttf&);
chain.syscall(&open&,&5,&chain.data,&0,&0);
chain.write_rax_ToVariable(0);
chain.read_rdi_FromVariable(0);
chain.syscall(&read&,&3,&undefined,&0x,&0x1000000);
chain.syscall(&fstat&,&189,&undefined,&chain.data);
chain.execute(function()&{
chain.logVariable(0);
logAdd(&Size:&&&+&getU32from(chain.data&+&0x48).toString());
现在打开代理或你用来拦截流量的网络工具,我创建了一个名为的简单C&server
刷新页面,使用此链发送缓冲区;使用适当的值替换IP, port, address,以及文件大小
sendBuffer(&192.168.0.4&,&12744);
chain.execute(function()&{
logAdd(&Dumped&);
使用cookies你可以自动向后续阶段传递信息,但我不会这么做,您还应该注意文件系统是只读的。
保存数据存储在以下位置
/user/home/[userID]/savedata/[titleID]/
/user/home//savedata/CUSA00455/FFXIVSYSTEM.bin
我们可以转储这些文件,但他们都是加密的。开发人员不太可能直接处理这个加密,我认为是由libSceSaveData模块来进行处理的。成功加载和初始化这个模块:
int&libSave&=&sceKernelLoadStartModule(&libSceSaveData.sprx&,&0,&NULL,&0,&0,&0);
int&(*sceSaveDataInitialize)(void&*);
RESOLVE(libSave,&sceSaveDataInitialize);
sceSaveDataInitialize(NULL);
尝试挂载或读/写保存数据时会收到一个错误信息。
*原文地址:,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
牛逼啊,PS4终于被破解了!
ps破解的大神不是说让玩盗版游戏的屌丝滚蛋吗
谁知道PS4 硬盘是用什么文件系统,ext3??
人家的说的是只是讨论PS4破解,不是游戏破解。
必须您当前尚未登录。
必须(保密)
悟空竟在打飞机
关注我们 分享每日精选文章

我要回帖

更多关于 索尼ps4破解 的文章

 

随机推荐