<- Back to the timetable

Console Hacking 2016

marcan

So you have an exploit. You have code execution. Great! But what do you do now? In the past, console homebrew usually focused on bringing up a development environment similar to the one used for commercial games. However, with the increasing complexity of console hardware, it's becoming impractical for a small team of hackers to create a full blown development SDK. Using leaked official SDKs is illegal. What can we do? Well, there's Linux. The PS4 is particularly great for Linux, because it is based on a modified x86 platform and a modified Radeon GPU. That means that once the basic OS port is complete, it can run existing games - even Steam games and other commercial software. But just how similar is the PS4 to a PC? Can you just throw GRUB on it and boot an Ubuntu kernel? Not quite. In this talk we'll cover the PS4 hardware and part of its software environment, and how we reverse engineered enough of it to write Linux drivers and kernel patches. We'll go over how we went from basic code execution to building a 'kexec' function that can boot into Linux from the PS4's FreeBSD-based kernel. We'll reverse engineer the PS4's special hardware, from special PCI interrupt management to the HDMI encoder. We'll dive deep into the Radeon-based GPU architecture, and we'll share some previously unreleased research and tools of interest to AMD Radeon driver developers and hackers. If you're interested in the strange world of x86 hardware that isn't quite a PC, then this talk is for you.

Download Slides
PDF ZIP JSON
0:00:07 - 0:00:12
0:01:06 - 0:01:11
0:01:32 - 0:01:43
0:02:26 - 0:02:36
0:02:41 - 0:02:44
0:02:44 - 0:02:49
0:02:49 - 0:03:04
0:03:09 - 0:03:18
0:03:24 - 0:03:29
0:03:37 - 0:03:40
0:03:45 - 0:03:49
0:03:54 - 0:03:57
0:04:08 - 0:04:13
0:04:25 - 0:04:34
0:04:49 - 0:04:52
0:04:55 - 0:04:58
0:05:08 - 0:05:29
0:06:44 - 0:07:02
0:07:54 - 0:07:57
0:08:01 - 0:08:11
0:08:11 - 0:08:15
0:08:17 - 0:08:20
0:08:55 - 0:09:26
0:09:26 - 0:09:28
0:09:34 - 0:09:36
0:09:36 - 0:09:39
0:09:39 - 0:09:47
0:09:56 - 0:10:25
0:10:26 - 0:10:35
0:11:20 - 0:11:25
0:11:34 - 0:11:37
0:11:50 - 0:11:56
0:11:56 - 0:11:59
0:12:02 - 0:12:08
0:12:09 - 0:12:17
0:12:27 - 0:12:37
0:12:50 - 0:12:55
0:12:58 - 0:13:05
0:13:17 - 0:13:20
0:13:20 - 0:13:32
0:13:36 - 0:13:38
0:13:39 - 0:13:45
0:14:21 - 0:14:31
0:14:41 - 0:14:56
0:15:09 - 0:15:11
0:15:20 - 0:15:26
0:15:32 - 0:15:39
0:15:49 - 0:15:57
0:16:13 - 0:16:21
0:16:39 - 0:16:44
0:17:01 - 0:17:14
0:17:15 - 0:17:21
0:18:35 - 0:18:38
0:18:38 - 0:18:45
0:19:17 - 0:19:28
0:19:29 - 0:19:52
0:19:57 - 0:20:07
0:20:08 - 0:20:12
0:20:17 - 0:20:21
0:20:22 - 0:20:39
0:20:41 - 0:20:49
0:20:49 - 0:20:52
0:21:37 - 0:21:56
0:21:57 - 0:21:59
0:22:05 - 0:22:07
0:22:14 - 0:22:20
0:22:41 - 0:22:49
0:22:57 - 0:23:03
0:23:04 - 0:23:07
0:23:09 - 0:23:12
0:23:15 - 0:23:20
0:23:20 - 0:23:24
0:23:25 - 0:23:34
0:23:42 - 0:24:02
0:24:14 - 0:24:49
0:24:49 - 0:24:55
0:25:16 - 0:25:25
0:25:33 - 0:25:50
0:25:51 - 0:26:00
0:26:09 - 0:26:17
0:26:18 - 0:26:21
0:26:25 - 0:26:29
0:27:10 - 0:27:36
0:27:41 - 0:27:45
0:27:47 - 0:27:57
0:27:57 - 0:28:00
0:28:09 - 0:28:12
0:29:06 - 0:29:26
0:29:28 - 0:29:32
0:29:58 - 0:30:05
0:30:12 - 0:30:22
0:30:46 - 0:30:48
0:31:48 - 0:31:55
0:32:05 - 0:32:40
0:33:16 - 0:33:27
0:33:27 - 0:33:35
0:33:47 - 0:33:54
0:33:54 - 0:34:00
0:34:00 - 0:34:02
0:34:07 - 0:34:23
0:34:30 - 0:34:37
0:34:39 - 0:34:43
0:34:44 - 0:34:49
0:34:58 - 0:35:05
0:35:16 - 0:35:26
0:35:34 - 0:35:44
0:35:51 - 0:36:04
0:36:43 - 0:36:53
0:36:53 - 0:36:56
0:36:57 - 0:37:09
0:37:34 - 0:37:45
0:38:08 - 0:38:17
0:38:49 - 0:39:12
0:41:15 - 0:41:30
0:41:56 - 0:42:05
0:42:38 - 0:42:40
0:42:40 - 0:42:43
0:42:50 - 0:43:06
0:43:06 - 0:43:11
0:43:12 - 0:43:15
0:45:18 - 0:45:23
0:46:48 - 0:46:50
0:53:27 - 0:53:31
0:53:32 - 0:53:36
0:53:37 - 0:53:42