Linux 学习嵌入式固件黑客
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6530767/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Learning Embedded Firmware Hacking
提问by caltuntas
I have a Samsung TV with connected via optical output to my DTS sound system.TV has ARM CPU and an embedded linux operating system. It comes with an embedded media player.But internal media player doesn't pass DTS audio to my sound system. it only passes-though AC3 and other formats. I want to hack TV's firmware to pass-though DTS audio to my sound system.
我有一台三星电视,通过光纤输出连接到我的 DTS 音响系统。电视有 ARM CPU 和嵌入式 linux 操作系统。它带有嵌入式媒体播放器。但内部媒体播放器不会将 DTS 音频传递到我的音响系统。它只能通过 AC3 和其他格式。我想破解电视的固件以将 DTS 音频传递到我的音响系统。
What are the books, learning resources etc. to start this kind of hobby project ? I have never programmed on embedded platform. What should I know before the start ? For example Should I know audio programming, electronics, Linux Kernel, C Programming ? Any recommendation would be helpful.
什么书籍、学习资源等可以启动这种爱好项目?我从未在嵌入式平台上编程。在开始之前我应该知道什么?例如,我应该了解音频编程、电子学、Linux 内核、C 编程吗?任何建议都会有所帮助。
Actually there is a whole dedicated sourceforge project related to firmware hacking on Samsung TVs called SamyGO. But When I asked one of main firmware hacker in this site, I didn't get a reply from him. So I thougth someone here can answer to my question.Thanks..
实际上,有一个专门的 sourceforge 项目与三星电视上的固件黑客有关,称为SamyGO。但是当我问这个网站的主要固件黑客之一时,我没有得到他的答复。所以我认为这里有人可以回答我的问题。谢谢..
UPDATE :
更新 :
How much electronics knowledge should I have for this kind of job ? (I have a C.S degree and basic knowledge about electronics, logic design etc.). Should I be a linux kernel or C expert ?
对于这种工作,我应该具备多少电子知识?(我有 CS 学位和电子、逻辑设计等方面的基本知识)。我应该是 linux 内核还是 C 专家?
Actually I have always wondered how embedded device hackers like George Hotzgain this kind of knowledge.Because it is a closed system, they don't have any documentation, how can they do this? Do they learn it from school?(I don't think so). If they do, What do they study? Which books do they use? If they don't, how ?
其实我一直想知道像George Hotz这样的嵌入式设备黑客是如何获得这种知识的。因为它是一个封闭的系统,他们没有任何文档,他们怎么能做到这一点?他们是从学校学到的吗?(我不这么认为)。如果他们这样做,他们学习什么?他们使用哪些书籍?如果他们不这样做,怎么办?
回答by Vitor
Hacking an undocumented system is nowhere a trivial task. You definitively should learn C and practice embedded programming and a good knowledge about electronics will help a lot (you'll have to look at the circuit and guess how it works, if you can't find any docs on google). My advice is: get some (documented) ARM board to start hacking on (beagleboard/pandaboard comes to mind). You'll learn a lot about Linux, C, Kernel development and even electronics if you want to. Trying to dive directly on a TV system will probably be very frustrating for you.
破解一个未记录的系统绝非易事。您绝对应该学习 C 并练习嵌入式编程,并且有关电子学的良好知识将有很大帮助(如果您在 google 上找不到任何文档,则必须查看电路并猜测它是如何工作的)。我的建议是:获取一些(记录在案的)ARM 板来开始黑客攻击(想到 beagleboard/pandaboard)。如果您愿意,您将学到很多关于 Linux、C、内核开发甚至电子学的知识。尝试直接在电视系统上潜水可能会让您非常沮丧。
UPDATE: At the electronics side, you don't need to be an electronic engineer. Study a lot of digital electronics and understand how CPU's, buses and commom peripherals work. Most of the time you can look at any chip code and search for it datasheet, but sometimes they're designed specially for one device, or have no identification at all. In this case, you'll need a logic analyzer to reverse engineer it and try to understand how to "talk" to it. You can learn CS and electronics from books, but real reverse engineering can only be learnt by experience (of course, learning how others do things helps a lot). Go on and open devices you find interesting, try to understand how they work and change things on it. You'll for sure burn some of them (begin with the cheaper ones), but it's the best way to learn how to hack devices.
更新:在电子方面,您无需成为电子工程师。研究大量数字电子产品并了解 CPU、总线和通用外围设备的工作原理。大多数情况下,您可以查看任何芯片代码并搜索它的数据表,但有时它们是专门为一种设备设计的,或者根本没有标识。在这种情况下,您需要一个逻辑分析仪来对其进行逆向工程,并尝试了解如何与它“对话”。你可以从书本上学习 CS 和电子学,但真正的逆向工程只能靠经验来学习(当然,学习别人的做事方式有很大帮助)。继续打开您觉得有趣的设备,尝试了解它们的工作原理并对其进行更改。你肯定会烧掉其中的一些(从便宜的开始),但它'
Just take care to not die while messing with high voltage devices (and LCD TV do have some HV parts)
小心不要在弄乱高压设备时死亡(液晶电视确实有一些高压部件)
回答by Fredrik Pihl
Suitable development boards to consider, with very active communities, i.e. easy to get help if you are stuck :-)
合适的开发板可供考虑,社区非常活跃,即如果您遇到困难,可以轻松获得帮助:-)
Start with them to learn about embedded systems, before you move on the more difficult tasks
在您继续执行更困难的任务之前,先从他们开始学习嵌入式系统
回答by Chintan Parikh
I came across this excellent blog post on Reverse engineering firmware for Linksys router,
我看到了这篇关于 Linksys 路由器逆向工程固件的优秀博客文章,
http://www.devttys0.com/2011/05/reverse-engineering-firmware-linksys-wag120n/
http://www.devttys0.com/2011/05/reverse-engineering-firmware-linksys-wag120n/
It explains in detail how to reverse engineer the firmware, get to the file system in clear steps. If you can follow through the steps, you would get a really good insight into what it takes to hack a firmware.
它详细解释了如何对固件进行逆向工程,以清晰的步骤进入文件系统。如果您可以按照这些步骤进行操作,您将非常深入地了解破解固件所需的条件。
I don't think you require lot of electronics knowledge to hack a firmware, basic 101 level knowledge would suffice. If you understand basic OS and systems in general then you should be able to work your way through.
我认为你不需要很多电子知识来破解固件,基本的 101 级知识就足够了。如果您大致了解基本的操作系统和系统,那么您应该能够按照自己的方式工作。
回答by Durai Amuthan.H
Yes,C language knowledge is important.
是的,C语言知识很重要。
First try and learn Raspberry Pithen jump into Adruino.
首先尝试学习Raspberry Pi,然后跳入Adruino。
You could find so many communities for these in facebook and google plus join and involve yourself.
你可以在 facebook 和 google plus 上找到这么多社区,加入并参与其中。
Then you can learn so many hacks
然后你可以学到很多技巧