超级任天堂模拟器—超级任天堂模拟器安卓
超级任天堂游戏模拟器被曝出安全漏洞
超级任天堂(SNES,Super Nintendo Entertainment System)是任天堂全球知名主机NES(国内称为小霸王)的后续主机,主机采用16位色表现,令主机的画面表现在当时非常之棒。而作为当时的主机霸主,任天堂SNES主机上出现了非常多经典的游戏,现在大红大紫的游戏系列很多都是在SNES上发迹的。像勇者斗恶龙系列、传说系列、最终幻想系列、超时空之轮系列等等。当年的超级任天堂凭借全球数千万台的销量一直占据着游戏机市场的鳌头,在这个优秀的平台上,诞生过无数优秀的精品游戏,很多作品即使拿到现在与PS2,XBOX的游戏相比在游戏性方面也毫不逊色(其实是比他们还要好很多)。如果你对那些令人激动的游戏念念不忘的话,而Snes9x可以在你的电脑上网模拟超级任天堂,让你再次回到童年。软件可根据不同硬件方便的调节声音,图像等。
上图中的那个程序是一个 SNES 模拟器,很多游戏爱好者都使用过它。从网上找到这些东西并不难,但我不会在文章里说,因为从技术上讲,这么做属于传播盗版。
首先,我拿出旧的外部硬盘,找到了我的SNES9x模拟器的压缩副本,启动它,就发现了一个 DLL 劫持漏洞。
Snes9x是款让你重温童年游戏的SNES模拟器,能够在Windows平台上运行经典SNES/SFC游戏的模拟器软件,支持.smc, .sfc, .fig, 和 .1等格式的游戏,可用键盘,也能用手柄进行操作,支持键位修改。
以 x86 和 x64 架构编写的程序利用动态链接库 (DLL) 在软件开发过程中提供灵活性和可移植性。 DLL 基本上是包含可重用代码、资源和变量的小程序。就其性质而言,它们没有入口点并且需要父级可执行文件在运行时调用它们。如果你只有一个 DLL,则可以使用 Rundll32.exe 之类的东西来运行该特定 DLL 的内容,而无需父级程序。否则,DLL 中的函数可以由父级可执行文件调用,使用 LoadLibrary API 调用将它们动态导入到程序中。
有时软件开发并不完全按计划进行,并且你可能会经常编写一个程序来调用加载一个不存在的 DLL。或者,在 SNES 模拟器的情况下,你可能会遇到相当于路径漏洞的问题,这基本上意味着程序尝试从当前工作目录加载 DLL,然后在别处查找。
以下就是我加载Procmon并运行SNES模拟器时的情况:
在上图中,SNES 模拟器已放置在我的 FlareVM 主机的桌面上。当程序尝试加载opengl32.dll时,它首先检查当前工作目录C:\\Users\\Husky\\Desktop\\SNES32bit\\。当它在这里找不到指定的 DLL 时,它会转到SysWOW64目录,并加载成功存在其中的DLL。这个SNES模拟器是一个32位应用程序,因此它检查SysWOW64是否需要dll是有意义的。
注意,System32和SysWOW64有点像冰岛/格陵兰的情况。在标准的x64设备上,64位系统目录是System32, 32位系统目录是SysWOW64。
另外,在这里需要注意的是,SNES模拟器有DEP但没有ASLR,将来可能会回到那个状态。
现在在一些攻击场景中,DLL劫持是通过以下方式实现的:只需要做一个MSFVenom DLL有效载荷,并将其替换为程序试图加载4head的载荷即可。直到程序崩溃或无法加载:
DOS不在这个范围内,要做得更好,可以进入DLL代理。
DLL 代理实现 DLL 劫持的成功率更高。
你可能能够从 DLL 劫持中获得 shellcode 执行,但程序仍然需要解析它想要从原始 DLL 进行的函数调用。而且你的 MSFVenom 生成的 DLL 不知道如何处理这些请求的函数,所以calc.exe运行,程序崩溃。
在 DLL 代理中,你可以创建一个新的 DLL,其中包含指向原始 DLL 的导入函数的指针。有效载荷隐藏到这个DLL的一个部分中,并使用剩余的空间将可执行文件指向它想要加载的原始DLL。
该程序以其原始预期功能执行,得到有效载荷执行。
使用 Procmon,过滤以下内容:
重新配置过滤器,以查看该DLL是否在程序执行的任何时刻被成功加载。因此,只需过滤即可扩大你的搜索条件:
如果你已经找到一个好的DLL代理候选,你可能会看到如下内容:
在攻击者的设备上,使用这个简单的Python脚本从原始DLL中取出导出的函数并将它们写入一个模块定义文件 (.def):
请注意引用原始DLL的两个位置,并确保相应地更改这些值。
所以,每当可执行文件问“嘿,DLL,函数在哪里?”代理DLL便回复到:“哦,是的,去检查[dllName]_original.dll,它应该在那里。”
现在,我们制作我们的代理 DLL。这是一个用 C 编写得非常简单的程序,它导出一个 DLLMain 函数作为 DLL 的入口点。在 DLLMain 方法中,我们偷偷调用了 Payload 函数。该函数执行,然后所有其他请求的函数调用都传递给 [dllName]_original.dll:
创建此 C 文件并将其命名为 [dllName].c:
到目前为止,一切顺利。
最后,我们需要创建这个代理 DLL 并将它与我们的模块定义文件链接起来。这可以通过 mingw-w64 来完成,它拥有编译DLL所需的必要工具链。注意这里的架构:我代理了32位SNES模拟器,所以我需要为32位架构编译它。
如果你的攻击设备上没有 mingw-w64,只需输入:
然后,编译我们的 DLL:
当 DLL 编译时,你现在应该有四个文件可以使用:
[dllName]_original.dll:我们从主机上拉下来的原始DLL,重命名为“_original”
[dllName].c:包含我们的有效载荷的代理 DLL 的 C 代码。
[dllName].def:使用Python脚本从原始dll中提取导出的函数调用创建的模块定义文件。
[dllName].dll:新编译的代理DLL。
最后一步是将原始DLL和代理DLL在目标主机的程序目录下登陆,这两个 DLL 必须与彼此和原始程序位于同一目录中。
找到两个 DLL 后,启动程序!
此时,已经有了一个加载到代理DLL中的功能完整的程序。没有崩溃,没有段错误,只有calc。
【 网络安全学*攻略 】
究极炒冷饭?任天堂新模拟器曝光:Switch也能玩GB老游戏
4月19日,据Neowin报道,有传言称,任天堂将把Game Boy游戏纳入其Nintendo Switch Online订阅中。Switch Online目录已经为喜欢复古游戏的玩家提供了大型NES和SNES游戏库。
泄漏的文件显示,任天堂正在开发适用于Nintendo Switch Online的Game Boy、Game Boy Color以及Game Boy Advance游戏工作模拟器,代号为“Sloop”的GBA模拟器和“Hiyoko”的Game Boy模拟器, 这两款模拟器均由任天堂欧洲的NERD团队开发,大部分的官方模拟器都出自该公司之手。
话说回来,Game Boy也是任天堂推出的游戏掌机,其内置的超级马里奥、瓦里奥、星之卡比、口袋妖怪、打砖块、麻将等游戏都成为了Game Boy的“金字招牌”。 时至今日,依旧有不少喜欢复古游戏的小伙伴,但成色好的Game Boy掌机硬件已经很难买到,所以大部分人都用模拟器运行GB老游戏。
除了文件,泄漏的信息中还包括了几张游戏截图,证实了Game Boy和Game Boy Advance服务几乎已经准备好上市。 小雷了解到,所有的Game Boy游戏都是作为单独的应用程序存在,预测任天堂可能还会GB老游戏变成商品,再捞一波钱。
任天堂Switch引进Game Boy、GBA等老游戏,一方面为喜欢老游戏的玩家提供更好的操作体验,另一方面,公司也能借助Switch Online订阅收割一波情怀党, 个人Switch Online会员一年需要325港元(约合人民币266.6元),有了这些二三十年前的老游戏,充会员的小伙伴估计要更多了。
对此,任天堂官方没有确认或者否认Switch Online服务上Game Boy和Game Boy Advance模拟器的存在以及未来可用性。 可以知道的是,平台上的拓展包订阅层已经提供对NES、SNES等目录中的模拟器以及游戏的访问权限,估计不久之后官方模拟器的服务就会面向Switch玩家推出。
比较可惜的是,GB、GBA上的都是二三十年前的游戏,数量极多,汉化的可能性十分小,小雷认为,官方模拟器服务很可能也不会登陆国行Switch,想玩老游戏的小伙伴可能还得有一台外版掌机。
适用于 PC 和 Mac 的最佳任天堂 3DS 模拟器
Citra 模拟器真的是一个野兽。
Nintendo 3DS 是一款非常受欢迎的游戏机。它在运行期间售出了超过 7500 万台,并收录了一些标志性的游戏。其中一些游戏包括多款口袋妖怪游戏、Etrian Odyssey 系列、Kid Icarus、Radiant Historia 以及各种 Mario、Zelda 和 Kirby 游戏。手持系统将于 2020 年 9 月停产,Nintendo eShop 将于 2023 年 3 月停产。因此,模拟是享受其中一些旧收藏的唯一途径。这是适用于 PC 和 Mac 的最佳任天堂 3DS 模拟器。
- Citra 模拟器(推荐)
Citra 模拟器
最好的 Nintendo 3DS 模拟器,毫无疑问。
- 定价:免费
- 平台: Windows、macOS、Linux 和 Android(下载)
我们喜欢什么:
- 易于使用和配置。
- 适用于 PC、Mac、Android 和 Linux。
- 积极开发。
- 体面的兼容性。超过半数的 3DS 游戏运行完美或非常好。
我们不喜欢的是:
- 没有天然的竞争对手,如果 Citra 不为您做这件事,您别无选择。
Citra Emulator 是适用于各种平台(包括 PC、Mac、Linux 和 Android)的最佳 Nintendo 3DS 模拟器。它具有良好的兼容性、硬件控制器支持以及常用的模拟器功能,如保存状态和内置作弊支持。由于大多数游戏都是单人游戏,我们认为没有人会介意作弊支持。
无论如何,模拟器在日常使用中都非常容易使用。我们的测试游戏运行良好,但您可能需要解密某些游戏。对于没有经验的人来说,这是一个相当多的过程,但一旦你*惯了,就不会非常困难。我们的测试游戏性能良好,无需修补,但我们是在功能相当强大的 PC 上进行测试。其他平台可能需要一些额外的爱。
RetroArch 是一款出色的一体化模拟器,通过其 Citra 内核支持 Nintendo 3DS。
- 定价:免费
- 平台: Windows、macOS、Linux、Android、iOS(下载)
我们喜欢什么:
- 它无处不在。
- 它以 Citra 为核心,因此具有与独立模拟器相同的兼容性。
- 您可以使用 RetroArch 玩各种其他控制台,使其成为一个很好的一体化选择。
- 有足够的配置选项适用于大多数人。
我们不喜欢的是:
- 该设置有一个学*曲线。
RetroArch 是大多数平台上最好的一体化模拟器。对于 PC、Mac、Linux、Android 和 iOS 用户来说,这是一个简单的推荐,因为它可以玩 Nintendo 3DS 游戏以及许多其他游戏机。设置它有点痛苦。您必须下载核心、加载核心、加载游戏,然后您才能玩游戏或从那里配置您的体验。一旦你*惯了它一点也不差,但对于刚接触模拟器体验的人来说可能有点吓人。
RetroArch 使用核心来玩游戏。将每个核心视为一个控制台,您可以像插件一样加载它。因此,您只需为您感兴趣的游戏机下载您想要的内核。3DS 内核的创建者是 Citra,它与独立的 Citra Emulator 是同一个开发者。因此,您的体验应该与 RetroArch 相同。如果您只想要 Nintendo 3DS 仿真,我们推荐 Citra。但是,如果您正在寻找多个控制台,那么 RetroArch 值得一试。