แจแแฎแแแแ แแก แคแแ แแแแแจแ 0x0A DC7831
แแ แกแขแแขแแแจแ แฉแแแ แแฆแแฌแแ แ, แแฃ แ แแแแ แฃแแแ แแแฃแจแแแ แแแฌแงแแแแแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแแฃแแแขแแ แจแ, แแแฉแแแแแ แฃแ แแแแ แแฅแแแแแแ แแแแฃแแแ แแแ แแ แจแแแแกแ แฃแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแชแแ แ แแแแแแแฃแ แ แแแแแแแ.
แฌแแแแแกแขแแ แแ
แแแแ แฎแแแก แฌแแ แจแแ แแฃแ แแแแแฅแขแแแแจแ
แ แแแแแแแแ แฌแแแก แฌแแ แฉแแแแก แแแแแ แแขแแ แแแจแ แกแแญแแ แ แแแฎแแ แแแฌแงแแแแแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแแแแแแ. firmware แแงแ แจแแแฃแแจแฃแแ แแ แแแฎแกแแแแ แฉแแแขแแแ แแแแแแ. แแแ แแก แแแแแแแ แซแแแแแ แ แแฃแแ แแแแ, แ แแแแแแฏแแ แแ แแแแแแขแแแ แแแแแชแแแแแ แแแฎแกแแแ แแแแจแ. แแ แแแแแ firmware แจแแแแแ แแฅแขแแฃแ แแ แฃแ แแแแ แแแแแ แแแ แแคแแ แแฃแ แแแฌแงแแแแแแแแแแแ. แแ แแก แงแแแแแคแแ แ MIPS แแแ แแแแ.
แแแแแฅแขแฃแ แ แแแแแแแแแก แแแแ, แฎแแแแแกแแฌแแแแแ แแแฃแแแขแแ แแแ แแ แแแแ แแแแแแ, แแแแ แแ แแแแแช แแแแแแแแ แแแแแก แแแจแแแแ. แจแแแแแ แฉแแแ แแแแแแฌแงแแแขแแ แแแแแแแแแแแแแ แกแแแฃแแแ แ แแแฃแแแขแแ แ, แ แแแแแแช แแแแแแฃแแก แจแแแกแ แฃแแแแแ แแ แกแแจแฃแแแแแแก แแแแแชแแแแ แแแแแแฌแงแแ แแแแแแ แ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ. แฉแแแ แแชแแแแ แแ แแแฃแจแแแ. แฉแแแ แแแคแแฅแ แแ, แ แ แแแฎแแแแ, แแฃ แแแแแแแขแแแ แแแ แแคแแ แแฃแ แแแฌแงแแแแแแแแแก, แ แแ แแกแแแ แจแแแกแ แฃแแแก แซแแ แแแแแ firmware. แซแแแแแ แแ แแขแแแแ - แแ แแกแแช แแแแแฃแแแแ. แฉแแแ แแแแแ แแ แแฎแแ แแแแคแแฅแ แแแ แแ แแแแแแฌแงแแแขแแ แจแแแแแฅแแแ แกแ แฃแแคแแกแแแแแ แแแฃแแแขแแ แ.
แจแแแแแ แแงแ แแแแแแฃแขแแ แฃแแ แกแแกแขแแแแแแก แแแฃแแแขแแ แ
แ แแขแแ Kopycat?
แแ แแก แกแแขแงแแแแแก แแแแแจแ.
- copycat (แแแแแแกแฃแ แ, แแ แกแแแแแ แกแแฎแแแ [หkษpษชkรฆt]) - แแแแขแแขแแ แ, แแแแขแแขแแ แ
- แแแขแ (แแแแแแกแฃแ แ, แแ แกแแแแแ แกแแฎแแแ [หkรฆt]) - แแแขแ, แแแขแ - แแ แแแฅแขแแก แแ แ-แแ แแ แจแแแฅแแแแแแก แกแแงแแแ แแแ แชแฎแแแแแ
- แแกแ "K" แแ แแก แแแขแแแแแก แแ แแแ แแแแ แแแแก แแแแแแ
แแกแแ
แแแฃแแแขแแ แแก แจแแฅแแแแกแแก แแแกแแฎแฃแแ แแงแ แซแแแแแ แแแแแ แแขแฃแแ แแแแแแแ:
- แแฎแแแ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแแแแก, แแแแฃแแแแแก, แแ แแชแแกแแ แแก แแแ แแแแแแก แกแฌแ แแคแแ แจแแฅแแแแก แจแแกแแซแแแแแแแ;
- แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแแก แแฌแงแแแแก แจแแกแแซแแแแแแแ แกแฎแแแแแกแฎแแ แแแแฃแแแแแ;
- แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแแก แแแฎแกแแแ แแแแจแ แแแแแกแแแแ แ แแ แแแแแ แแแแแชแแแแแแก (firmware) แฉแแขแแแ แแแแก แจแแกแแซแแแแแแแ;
- แกแแแแจแแขแแแแแ แแฃแจแแแแแก แฃแแแ แ (แกแแกแขแแแแก แแแแแแแ แแแแแก แกแแแแจแแขแแแ);
- แแแฃแแแขแแ แแแ แฃแ แแแแ แแฅแแแแแแแก แจแแกแแซแแแแแแแ แฉแแจแแแแแฃแแ แแแแแ แแแแก แกแแจแฃแแแแแแ;
- แแแแแแ แแแแแแแแ แแแ แแแ แแแแแแแแ แแแแกแแแแก.
แจแแแแแแ, แแแขแแแแ แแ แฉแแฃแ แแฅแแ แแแแแแแแแขแแชแแแกแแแแก, แแแขแแแฃแกแแก แแ แฅแแขแแฅแขแฃแ แ (แแก แแ แแก แแแจแแ, แ แแแแกแแช แแแแฃแแแแ แแ แแแแแแแแแ แฃแ แแแแ แแแแแ แแแแแชแแแแ แแแ แขแฃแแแฃแ แ แแแขแแแฃแกแแแแก แกแแจแฃแแแแแแ), JSON, แ แแแแ แช แแแฌแงแแแแแแแแก แแฆแฌแแ แแแแแแก แคแแ แแแขแ แแ GDB RSP, แ แแแแ แช แแ แแขแแแแแ แแแแฃแแแ แแแ แฃแ แแแแ แแฅแแแแแแแกแแแแก.
แแแแแแแแ แแแ แแ แฌแแแแ แชแแขแ แแแขแแ แแแแแแแแ แแแแก แแ แแฅแขแแฃแ แแ แแแแแแแแ แแแแก. แแ แแ แแแก แแแแแแแแแแแจแ แแแแฎแแ แชแแแแแ MIPS, x86, V850ES, ARM แแ PowerPC แแ แแชแแกแแ แแก แแแ แแแแแ.
แแ แแแฅแขแ แแแ แแแแ แแ แแ แแ แแแกแ แคแแ แแ แกแแแแแแแแแแแก แฌแแแแจแ แฌแแ แแแแแ. แแ แแแฅแขแแก แแแขแแแฃแ แแฆแฌแแ แแก แแแแแแแแแแแ แแแแแแแแแแ, แแแแ แแ แแฎแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ Kopycat-แแก แแแแแงแแแแแแแ.
แงแแแแแแ แแแฃแแแแแแแแแกแแแแก, แแแฃแแแขแแ แแก แแ แแแ แแแ แกแแแก แฉแแแแขแแแ แแแ แจแแกแแซแแแแแแแ
แแแ แขแแ แฅแ แแแฃแแแขแแ แจแ
แจแแแแฎแกแแแแแ, แ แแ แแแ แ SMARTRHINO-2018-แแก แแแแคแแ แแแชแแแแ แจแแแฅแแแ แกแแขแแกแขแ แแแฌแงแแแแแแแ "Rhinoceros" แกแแแแ แแกแแแ แ แแแแแแแ แแแก แฃแแแ แแแแก แกแแกแฌแแแแแแแแ. แกแขแแขแแแฃแ แ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแแแแก แแ แแชแแกแ แแฆแฌแแ แแแ แแงแ
แแฎแแ แจแแแแชแแแแ แแแแแแแขแแ "แแแแแแแแแแ" แแ แแแแฃแจแแแ firmware แแแฃแแแขแแ แจแ.
แฉแแแ แแแญแแ แแแแ:
1) Java 1.8
2) แแแแแแ แแ แแแแฃแแ
Windows- แแกแแแแก:
1)
2)
Linux-แแกแแแแก:
1) แกแแแแข
GDB แแแแแแขแแ แจแแแแซแแแแ แแแแแแงแแแแ Eclipse, IDA Pro แแ radare2.
แ แแแแ แแฃแจแแแแก แแแ?
แแแฃแแแขแแ แจแ firmware-แแก แจแแกแแกแ แฃแแแแแแ แแฃแชแแแแแแแแ แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแแก โแแฌแงแแแโ, แ แแแแแแช แ แแแแฃแ แ แแแฌแงแแแแแแแแก แแแแแแแแ.
แ แแแแฃแ แ แแแฌแงแแแแแแแ ("แแแ แขแแ แฅแ") แจแแแซแแแแ แแแฉแแแแแแ แแงแแก แแแแ-แกแฅแแแแแ:
แแแฃแแแขแแ แก แแฅแแก แแแแฃแแฃแ แ แกแขแ แฃแฅแขแฃแ แ แแ แกแแแแแแ แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแ แจแแแซแแแแ แแฆแฌแแ แแแ แแงแแก JSON แคแแแแจแ.
JSON 105 แฎแแแแแ
{
"top": true,
// Plugin name should be the same as file name (or full path from library start)
"plugin": "rhino",
// Directory where plugin places
"library": "user",
// Plugin parameters (constructor parameters if jar-plugin version)
"params": [
{ "name": "tty_dbg", "type": "String"},
{ "name": "tty_bt", "type": "String"},
{ "name": "firmware", "type": "String", "default": "NUL"}
],
// Plugin outer ports
"ports": [ ],
// Plugin internal buses
"buses": [
{ "name": "mem", "size": "BUS30" },
{ "name": "nand", "size": "4" },
{ "name": "gpio", "size": "BUS32" }
],
// Plugin internal components
"modules": [
{
"name": "u1_stm32",
"plugin": "STM32F042",
"library": "mcu",
"params": {
"firmware:String": "params.firmware"
}
},
{
"name": "usart_debug",
"plugin": "UartSerialTerminal",
"library": "terminals",
"params": {
"tty": "params.tty_dbg"
}
},
{
"name": "term_bt",
"plugin": "UartSerialTerminal",
"library": "terminals",
"params": {
"tty": "params.tty_bt"
}
},
{
"name": "bluetooth",
"plugin": "BT",
"library": "mcu"
},
{ "name": "led_0", "plugin": "LED", "library": "mcu" },
{ "name": "led_1", "plugin": "LED", "library": "mcu" },
{ "name": "led_2", "plugin": "LED", "library": "mcu" },
{ "name": "led_3", "plugin": "LED", "library": "mcu" },
{ "name": "led_4", "plugin": "LED", "library": "mcu" },
{ "name": "led_5", "plugin": "LED", "library": "mcu" },
{ "name": "led_6", "plugin": "LED", "library": "mcu" },
{ "name": "led_7", "plugin": "LED", "library": "mcu" },
{ "name": "led_8", "plugin": "LED", "library": "mcu" },
{ "name": "led_9", "plugin": "LED", "library": "mcu" },
{ "name": "led_10", "plugin": "LED", "library": "mcu" },
{ "name": "led_11", "plugin": "LED", "library": "mcu" },
{ "name": "led_12", "plugin": "LED", "library": "mcu" },
{ "name": "led_13", "plugin": "LED", "library": "mcu" },
{ "name": "led_14", "plugin": "LED", "library": "mcu" },
{ "name": "led_15", "plugin": "LED", "library": "mcu" }
],
// Plugin connection between components
"connections": [
[ "u1_stm32.ports.usart1_m", "usart_debug.ports.term_s"],
[ "u1_stm32.ports.usart1_s", "usart_debug.ports.term_m"],
[ "u1_stm32.ports.usart2_m", "bluetooth.ports.usart_m"],
[ "u1_stm32.ports.usart2_s", "bluetooth.ports.usart_s"],
[ "bluetooth.ports.bt_s", "term_bt.ports.term_m"],
[ "bluetooth.ports.bt_m", "term_bt.ports.term_s"],
[ "led_0.ports.pin", "u1_stm32.buses.pin_output_a", "0x00"],
[ "led_1.ports.pin", "u1_stm32.buses.pin_output_a", "0x01"],
[ "led_2.ports.pin", "u1_stm32.buses.pin_output_a", "0x02"],
[ "led_3.ports.pin", "u1_stm32.buses.pin_output_a", "0x03"],
[ "led_4.ports.pin", "u1_stm32.buses.pin_output_a", "0x04"],
[ "led_5.ports.pin", "u1_stm32.buses.pin_output_a", "0x05"],
[ "led_6.ports.pin", "u1_stm32.buses.pin_output_a", "0x06"],
[ "led_7.ports.pin", "u1_stm32.buses.pin_output_a", "0x07"],
[ "led_8.ports.pin", "u1_stm32.buses.pin_output_a", "0x08"],
[ "led_9.ports.pin", "u1_stm32.buses.pin_output_a", "0x09"],
[ "led_10.ports.pin", "u1_stm32.buses.pin_output_a", "0x0A"],
[ "led_11.ports.pin", "u1_stm32.buses.pin_output_a", "0x0B"],
[ "led_12.ports.pin", "u1_stm32.buses.pin_output_a", "0x0C"],
[ "led_13.ports.pin", "u1_stm32.buses.pin_output_a", "0x0D"],
[ "led_14.ports.pin", "u1_stm32.buses.pin_output_a", "0x0E"],
[ "led_15.ports.pin", "u1_stm32.buses.pin_output_a", "0x0F"]
]
}
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแ แแแแขแ แก firmware แกแแฅแชแแแจแ แแแ แแแ แแ แแก แคแแแแแก แกแแฎแแแ, แ แแแแแแช แจแแแซแแแแ แฉแแแขแแแ แแแก แแแ แขแฃแแแฃแ แแแฌแงแแแแแแแแจแ, แ แแแแ แช firmware.
แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแ แแ แแแกแ แฃแ แแแแ แแฅแแแแแแ แแแแแแ แแแแ แแชแแฃแ แกแแกแขแแแแกแแแ แจแแแซแแแแ แฌแแ แแแแแแแแแ แแงแแก แจแแแแแแ แแแแแ แแแแ:
แแแฃแแแขแแ แแก แแแแแแแแแแแ แขแแกแขแแก แแแแแแแแ แแแแชแแแก แฃแ แแแแ แแฅแแแแแแแก แซแแ แแแแแ OS-แแก COM แแแ แขแแแแแ (UART แแ UART แแแแแ แแแ Bluetooth แแแแฃแแแกแแแแก). แแก แจแแแซแแแแ แแงแแก แ แแแแฃแ แ แแแ แขแแแ, แ แแแแแแแแแแช แแแแแแจแแ แแแฃแแแ แแแฌแงแแแแแแแแแ แแ แแแ แขแฃแแแฃแ แ COM แแแ แขแแแ (แแแแกแแแแก แฃแแ แแแแ แแญแแ แแแแแ com0com/socat).
แแแแแแแ แแแ แแแแ แแแฃแแแขแแ แแแ แฃแ แแแแ แแแแแก แแ แ แซแแ แแแแแ แแแ แแ แกแแแแแก:
- GDB RSP แแ แแขแแแแแ (แจแแกแแแแแแกแแ, แแแกแขแ แฃแแแแขแแแ, แ แแแแแแแช แแฎแแ แก แฃแญแแ แแ แแ แแ แแขแแแแแก, แแ แแก Eclipse / IDA / radare2);
- แจแแแ แแแฃแแแขแแ แแก แแ แซแแแแแแก แฎแแแ (Argparse แแ Python).
แแแ แขแฃแแแฃแ แ COM แแแ แขแแแ
แแแแกแแแแแก, แ แแ แแแฃแแแแจแแ แแแ แแแ แขแฃแแแฃแ แแแฌแงแแแแแแแแก UART-แแแ แแแแแแแแ แแ แแแแฅแแแแแ แขแแ แแแแแแแก แกแแจแฃแแแแแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ แแกแแชแแ แแแฃแแ แแแ แขแฃแแแฃแ แ COM แแแ แขแแแแก แฌแงแแแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแ แ แแแ แขแก แแงแแแแแก แแแฃแแแขแแ แ, แฎแแแ แแแแ แแก แขแแ แแแแแแแก แแ แแแ แแแ (PuTTY แแ แแแ แแแ):
com0com-แแก แแแแแงแแแแแแ
แแแ แขแฃแแแฃแ แ COM แแแ แขแแแแก แแแแคแแแฃแ แแชแแ แฎแแแแ com0com แแแแ แแแแแแ แแแงแแแแแแก แแ แแแ แแแแก แแแแแงแแแแแแ (แแแแกแแแแก แแแ แกแแ - C: แแ แแแ แแแแก แคแแแแแแ (x86) com0comsetupั.exe, แแ GUI แแแ แกแแ - C: แแ แแแ แแแแก แคแแแแแแ (x86) com0comsetupg.exe):
แจแแแแแฌแแแ แงแฃแแแแ แแฃแคแแ แแก แแแแแญแแ แแแแแก แฉแแ แแแ แงแแแแ แจแแฅแแแแแ แแแ แขแฃแแแฃแ แ แแแ แขแแกแแแแก, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแฃแแแขแแ แ แแแแแแแแแ แแแกแฃแฎแก COM แแแ แขแแแแ.
แกแแแแขแแก แแแแแงแแแแแแ
UNIX แกแแกแขแแแแแแ แแแ แขแฃแแแฃแ แ COM แแแ แขแแแ แแแขแแแแขแฃแ แแ แแฅแแแแแ แแแฃแแแขแแ แแก แแแแ แแแแกแแแแก socat แฃแขแแแแขแแก แแแแแงแแแแแแ, แฃแแ แแแแ แแแฃแแแแแ แแแ แขแแก แกแแฎแแแจแ แแ แแคแแฅแกแ แแแฃแแแขแแ แแก แแแจแแแแแกแแก socat:
.
แจแแแ แแ แซแแแแแแก แฎแแแแก แแแขแแ แคแแแกแ (Argparse แแ Python)
แแแแแแแแ Kopycat แแ แแก แแแแกแแแแก แแแแแแแชแแ, แแแฃแแแขแแ แ แฃแแ แฃแแแแแงแแคแก แแ แซแแแแแแก แฎแแแแก แแแขแแ แคแแแกแแก แแ แแแ แแแแขแก แแแก แแแแแฅแขแแแแแ แแ แชแแแแแแแแแ แฃแ แแแแ แแแแแกแแแแก: Argparse แแ Python.
Argparse แแ แแก CLI แฉแแจแแแแแฃแแ Kopycat-แจแ แแ แงแแแแแแแแก แฎแแแแแกแแฌแแแแแแ แงแแแแแกแแแแก.
แแแขแแ แแแขแแฃแแ CLI แแ แแก Python แแแ แฏแแแแแ. แแแก แแแแแกแแงแแแแแแแ แแฅแแแ แฃแแแ แแแแแแกแขแแแแ แแ Jep Python แแแแฃแแ แแ แแแแแแแคแแแฃแ แแ แแ แแแฃแแแขแแ แ แแแแแแแแ แแฃแจแแแแแกแแแแก (แแแแแแงแแแแแ แแแแฎแแแ แแแแแก แแแแแแ แกแแกแขแแแแแ แแแแแกแขแแแแ แแแฃแแ Python แแแ แฏแแแแแ).
แแแแแแแก แแแแฃแแแก แแแกแขแแแแชแแ Jep
Linux-แแก แฅแแแจ Jep แจแแแซแแแแ แแแแแกแขแแแแ แแแก แแแแแก แกแแจแฃแแแแแแ:
pip install jep
Windows-แแ Jep-แแก แแแกแแงแแแแแแแ, แฏแแ แฃแแแ แแแแแแกแขแแแแ แแ Windows SDK แแ แจแแกแแแแแแกแ Microsoft Visual Studio. แฉแแแ แชแแขแแแ แแแแแแแแแแแ แแ
pip install jep-3.8.2-cp27-cp27m-win_amd64.whl
Jep-แแก แแแกแขแแแแชแแแก แจแแกแแแแฌแแแแแแ, แแฅแแแ แฃแแแ แแแฃแจแแแ แแ แซแแแแแแก แฎแแแแ:
python -c "import jep"
แกแแแแกแฃแฎแแ แฃแแแ แแแแฆแแ แจแแแแแแ แจแแขแงแแแแแแแ:
ImportError: Jep is not supported in standalone Python, it must be embedded in Java.
แแฅแแแแ แกแแกแขแแแแก แแแฃแแแขแแ แแก แกแแ แแฃแ แคแแแแจแ (แแแแแ แแแ.แฆแแแฃแ แ - Windows-แแกแแแแก, แแแแแ แแแ โ ะดะปั Linux) ะบ ัะฟะธัะบั ะฟะฐัะฐะผะตััะพะฒ DEFAULT_JVM_OPTS
แแแแแแขแแ แแแแแขแแแแแ แแแ แแแแขแ แ Djava.library.path
- แแก แฃแแแ แจแแแชแแแแแก แแแแแกแขแแแแ แแแฃแแ Jep แแแแฃแแแก แแแแก.
Windows-แแกแแแแก แจแแแแแ แฃแแแ แแงแแก แแกแแแ แฎแแแ:
set DEFAULT_JVM_OPTS="-XX:MaxMetaspaceSize=256m" "-XX:+UseParallelGC" "-XX:SurvivorRatio=6" "-XX:-UseGCOverheadLimit" "-Djava.library.path=C:/Python27/Lib/site-packages/jep"
Kopycat-แแก แแแจแแแแ
แแแฃแแแขแแ แ แแ แแก แแแแกแแแแก JVM แแแแแแแชแแ. แแแจแแแแ แฎแแ แชแแแแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แแ แซแแแแแแก แฎแแแแก แกแแ แแแขแแก แกแแจแฃแแแแแแ (sh/cmd).
Windows-แแ แแแกแแจแแแแ แแ แซแแแแแ:
binkopycat -g 23946 -n rhino -l user -y library -p firmware=firmwarerhino_pass.bin,tty_dbg=COM26,tty_bt=COM28
Linux-แแก แฅแแแจ แแฃแจแแแแแก แแ แซแแแแแ socat แฃแขแแแแขแแก แแแแแงแแแแแแ:
./bin/kopycat -g 23946 -n rhino -l user -y library -p firmware=./firmware/rhino_pass.bin, tty_dbg=socat:./COM26,tty_bt=socat:./COM28
-g 23646
โ TCP แแแ แขแ, แ แแแแแแช แฆแแ แแฅแแแแ GDB แกแแ แแแ แแ แฌแแแแแแกแแแแก;-n rhino
โ แซแแ แแแแแ แกแแกแขแแแแก แแแแฃแแแก (แแฌแงแแแแแ แแแฌแงแแแแแแแแก) แแแกแแฎแแแแแ;-l user
โ แแแแแแแแแแแก แแแกแแฎแแแแแ แซแแ แแแแแ แแแแฃแแแก แแแกแแซแแแแแ;-y library
โ แแแฌแงแแแแแแแแจแ แจแแแแแแแ แแแแฃแแแแแก แซแแแแแก แแแ;firmwarerhino_pass.bin
- แแแแแแ firmware แคแแแแแกแแแ;- COM26 แแ COM28 แแ แแก แแแ แขแฃแแแฃแ แ COM แแแ แขแแแ.
แจแแแแแแ, แแแแฎแแแแ แแแแแฉแแแแแ Python >
(แแ Argparse >
):
18:07:59 INFO [eFactoryBuilder.create ]: Module top successfully created as top
18:07:59 INFO [ Module.initializeAndRes]: Setup core to top.u1_stm32.cortexm0.arm for top
18:07:59 INFO [ Module.initializeAndRes]: Setup debugger to top.u1_stm32.dbg for top
18:07:59 WARN [ Module.initializeAndRes]: Tracer wasn't found in top...
18:07:59 INFO [ Module.initializeAndRes]: Initializing ports and buses...
18:07:59 WARN [ Module.initializePortsA]: ATTENTION: Some ports has warning use printModulesPortsWarnings to see it...
18:07:59 FINE [ ARMv6CPU.reset ]: Set entry point address to 08006A75
18:07:59 INFO [ Module.initializeAndRes]: Module top is successfully initialized and reset as a top cell!
18:07:59 INFO [ Kopycat.open ]: Starting virtualization of board top[rhino] with arm[ARMv6Core]
18:07:59 INFO [ GDBServer.debuggerModule ]: Set new debugger module top.u1_stm32.dbg for GDB_SERVER(port=23946,alive=true)
Python >
แฃแ แแแแ แแฅแแแแแแ IDA Pro-แกแแแ
แขแแกแขแแ แแแแก แแแกแแแแ แขแแแแแแแ, แฉแแแ แแแงแแแแแ Rhino firmware, แ แแแแ แช แฌแงแแ แ แคแแแแ แแแแแแแแกแแแแก IDA-แจแ แคแแ แแแจแ
แแฅแแแ แแกแแแ แจแแแแซแแแแ แแแแแแงแแแแ แซแแ แแแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแแขแ แแแคแแ แแแชแแแก แแแ แแจแ.
IDA Pro-แจแ Kopycat-แแก แแแจแแแแแก แจแแแแแ, Debugger แแแแแฃแจแ แแแแแแแ แแฃแแฅแขแแ โแแแแแ แแแแก แฉแแ แแแโฆ"แแ แแแ แฉแแแ"แแแกแขแแแชแแฃแ แ GDB แแแแแ แแแ". แจแแแแแแ, แแแแงแแแแ แแแแจแแ แ: แแแแแฃ Debugger - แแแแฃแจแแแแแแก แแแ แแแแขแ แแแโฆ
แแแแงแแแแ แแแแจแแแแแแแแแ:
- แแแแแแแชแแ - แแแแแกแแแแ แ แแแแจแแแแแแแ
- แฐแแกแขแแก แกแแฎแแแ: 127.0.0.1 (แแ แแแกแขแแแชแแฃแ แ แแแแ แแขแแก IP แแแกแแแแ แแ, แกแแแแช แแฃแจแแแแก Kopycat)
- แแแ แขแ: 23946
แแฎแแ แแแแแ แแแแก แฆแแแแแ แฎแแแแแกแแฌแแแแแ แฎแแแแ (F9 แแแกแแฆแแแ):
แแแแฌแแแแฃแแแ แแแกแแ, แ แแแ แแแฃแแแแจแแ แแแ แแแแแ แแแแก แแแแฃแแก แแแฃแแแขแแ แจแ. IDA แแแแแแแก แแแแแ แแแแก แ แแแแแจแ, แฎแแแแแกแแฌแแแแแ แฎแแแแ แแแแแขแแแแแ แคแแแฏแ แแแ: แแแคแแ แแแชแแ แ แแแแกแขแ แแแแก แจแแกแแฎแแ, แกแขแแแแก แจแแกแแฎแแ.
แแฎแแ แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แแแแแ แแแแก แงแแแแ แกแขแแแแแ แขแฃแแ แคแฃแแฅแชแแ:
- แแแกแขแ แฃแฅแชแแแแแก แแขแแแแแ แแแ แจแแกแ แฃแแแแ (แฒจแแแแแฏแ ะธ แแแแแแแแฏแ โ แแแแแแจแแแ F7 แแ F8, แจแแกแแแแแแกแแ);
- แจแแกแ แฃแแแแแก แแแฌแงแแแ แแ แจแแฉแแ แแแ;
- แจแแฌแงแแแขแแก แฌแแ แขแแแแแแก แจแแฅแแแ แ แแแแ แช แแแแแกแแแแก, แแกแแแ แแแแแชแแแแแแกแแแแก (F2 แแแกแแฆแแแ).
แแแแแ แแแแแแ แแแแแแจแแ แแแ แแ แแแจแแแแก firmware แแแแแก แแแจแแแแแก. แแแแแแแแ แ แจแแกแ แฃแแแแแก แแแแแชแแ แฃแแแ แแงแแก แแแกแแแแ แแ 0x08006A74
- แคแฃแแฅแชแแแก แแแฌแงแแแ Reset_Handler. แแฃ แฉแแแแแแแแแแก แฅแแแแแ แแแแแฎแแแแ, แจแแแแซแแแแ แแฎแแแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแ แแแแแแ แ. แแฅแแแ แจแแแแซแแแแ แแแแแแแกแแ แแฃแ แกแแ แ แแ แฎแแแแ (แแแกแแแแ แแ 0x08006ABE
) แแ แจแแแกแ แฃแแแ แแแแ แแชแแ แแแฃแจแแแ แแฃแ แกแแ แแแแ (แแแกแแฆแแแ F4).
แจแแแแแแ, แจแแแแซแแแแ แแแแญแแ แแ F7 แคแฃแแฅแชแแแก แจแแกแแงแแแแแ แแแแแแ แ.
แแกแแ แแแแแแแแข แแ แซแแแแแ แแ แแชแแกแแก แแแแ แซแแแแแ (F9 แฆแแแแแ), แจแแแแแ แแแแแฉแแแแแ แคแแแฏแแ แ โแแแฎแแแ แแแแแแแแโ แแ แแ แฆแแแแแแ แจแแแฉแแ แแก:
แ แแแแกแแช แแแแญแแ แ แจแแแฉแแ แแก firmware แแแแแก แจแแกแ แฃแแแแ แจแแฉแแ แแแฃแแแ แแ แจแแแซแแแแ แแแแ แซแแแแแก แแแแแ แแแกแแแแ แแแแแ แแ แแแแแแแ, แกแแแแช แแก แจแแฌแงแแ.
แแฃ แแแแแ แซแแแแแ แแแแแก แจแแกแ แฃแแแแแก, แแแ แขแฃแแแฃแ COM แแแ แขแแแแแ แแแแแแจแแ แแแฃแ แขแแ แแแแแแแแจแ แแแฎแแแ แจแแแแแ แฎแแแแแก:
"แกแแฎแแแแฌแแคแ แจแแแแแแแแ" แฎแแแแก แแ แกแแแแแ แแแฃแแแแแแก แแแแแ, แ แแ แแแ แขแฃแแแฃแ แ Bluetooth แแแแฃแแ แแแแแแแแ แแแแฎแแแ แแแแแก COM แแแ แขแแแแ แแแแแชแแแแแแก แแแฆแแแแก แ แแแแแจแ.
แแฎแแ Bluetooth แขแแ แแแแแแจแ (แกแฃแ แแแแ COM29) แจแแแแซแแแแ แจแแแงแแแแแ แแ แซแแแแแแแ Rhino แแ แแขแแแแแแก แจแแกแแแแแแกแแ. แแแแแแแแแ, "MEOW" แแ แซแแแแแ แแแแแ แฃแแแแก แกแขแ แแฅแแแก "mur-mur" Bluetooth แขแแ แแแแแแจแ:
แแแแแซแ แกแ แฃแแแแแ แแ แ
แแแฃแแแขแแ แแก แจแแฅแแแแกแแก แจแแแแซแแแแ แแแ แฉแแแ แแแแแ แแขแฃแแ แแแฌแงแแแแแแแแก แแแขแแแแแแก/แแแฃแแแชแแแก แแแแ. แแแแแแแแแ, Bluetooth แแแแฃแแแก แแแฃแแแชแแ แจแแกแแซแแแแแแแ แกแฎแแแแแกแฎแแ แแแแ:
- แแแฌแงแแแแแแแ แกแ แฃแแแ แแ แแก แแแฃแแแ แแแฃแแ แแ แซแแแแแแแแก แกแ แฃแแ แแแแแแแฅแขแแ;
- AT แแ แซแแแแแแแ แแแฃแแแ แแแฃแแแ แแ แแแแแชแแแแ แแแแแแ แแแแฆแแแ แซแแ แแแแแ แกแแกแขแแแแก COM แแแ แขแแแแ;
- แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแ แฃแแ แฃแแแแแงแแคแก แแแแแชแแแแ แกแ แฃแ แแแแแแแกแแแแ แแแแแก แ แแแแฃแ แแแฌแงแแแแแแแแแ;
- แ แแแแ แช แฃแแ แแแ แแแแแ แ, แ แแแแแแช แงแแแแแแแแก แแแ แฃแแแแก "OK".
แแแฃแแแขแแ แแก แแแแแแแแแแแ แแแ แกแแ แแงแแแแแก แแแแ แ แแแแแแแแก - แแแ แขแฃแแแฃแ แ Bluetooth แแแแฃแแ แแกแ แฃแแแแก แแแแคแแแฃแ แแชแแแก, แ แแก แจแแแแแแแช แแแ แแแแแแแก แแแแแชแแแแ "แแ แแฅแกแแก" แ แแแแแจแ แซแแ แแแแแ แกแแกแขแแแแก COM แแแ แขแแแแ แแแฃแแแขแแ แแก UART แแแ แขแจแ.
แแแแแแฎแแแแ แแแแแก แแแ แขแแแ แแแกแขแ แฃแแแแขแแชแแแก แจแแกแแซแแแแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแแ แแคแแ แแแก แแแแแแ แแ แแแฌแแแ แแ แแ แแก แแแแแ แแแแ. แแแแแแแแแ, แแฃ DMA-แแ แแแแแชแแแแ แแแแแชแแแแก แแแแขแ แแแแ แแแกแฃแฎแแกแแแแแแแ แขแแแแแ แ แแ แแ แแก แจแแฅแแแแแ (แจแแแแฌแแแแ แฎแแ แชแแแแแแแ แคแฃแแฅแชแแแจแ ws2812b_waitแแแแแแ แแแแก 0x08006840
), แแแจแแ firmware แงแแแแแแแแก แแแแแแแแแ แแ แแจแแก แแแแแขแแแ แแแแก แแแแแแแแฃแแแแแแแแแ แแแแก 0x200004C4
แ แแแแแแช แแฉแแแแแแก DMA แแแแแชแแแแ แฎแแแแก แแแแแแแแแก:
แฉแแแ แจแแแแแซแแแ แแ แกแแขแฃแแชแแแก แแแแแแแ แแชแแแแแ แแ แแจแแก แฎแแแแ แแแแแขแแแ แแแแ แแแแแแแแฃแแแ แแแกแขแแแแชแแแกแแแแแแ. IDA Pro-แจแ แจแแแแซแแแแ แจแแฅแแแแ แแแแแแแก แคแฃแแฅแชแแ แแ แแแแแซแแฎแแ แแแ แฌแงแแแขแแก แฌแแ แขแแแจแ แแ แแแแแ แฉแแกแแแ แฌแงแแแขแแก แฌแแ แขแแแ แแแแจแ 1 แแแแจแแแแแแแแก แแ แแจแแก แฉแแฌแแ แแก แจแแแแแ. แแแแแแแแฃแแแ.
แฌแงแแแขแแก แฌแแ แขแแแแก แแแแแฃแจแแแแแแแ
แแแ แแแแ, แแแแแ แจแแแฅแแแแ แแแแแแแก แคแฃแแฅแชแแ IDA-แจแ. แแแแแฃ แคแแแแ - แกแแ แแแขแแก แแ แซแแแแแ...
แแแแแแขแแ แแฎแแแ แคแ แแแแแแขแ แกแแแจแ แแแ แชแฎแแแ, แแแแชแแ แกแแฎแแแ (แแแแแแแแแ, BPT),
แขแแฅแกแขแแก แแแแจแ แแแ แฏแแแแ แจแแแงแแแแแ แคแฃแแฅแชแแแก แแแแ:
def skip_dma():
print "Skipping wait ws2812..."
value = Byte(0x200004C4)
if value == 1:
PatchDbgByte(0x200004C4, 0)
return False
แแแแก แจแแแแแ แแแแฌแแแแฃแแแ แแแกแแจแแแแแ แแ แแแฎแฃแ แแ แกแแ แแแขแแก แคแแแฏแแ แ.
แแฎแแ แแแแแ แแแแแแแแแ แแแแแ 0x0800688A
แแแแงแแแแ แฌแงแแแขแแก แฌแแ แขแแแ (F2 แฆแแแแแ), แจแแชแแแแแ แแแ (แแแแขแแฅแกแขแฃแ แ แแแแแฃ แฌแงแแแขแแก แฌแแ แขแแแแก แ แแแแฅแขแแ แแแ...), แแ แแแแแแแฌแงแแแ แกแแ แแแขแแก แขแแแแก แแแงแแแแแ Python-แแ:
แแฃ แแแแแแแแแแแ แแ แแจแแก แแแแจแแแแแแแ แแแแแแแแฃแแแ แฃแแ แแก 1-แก, แแแจแแ แฃแแแ แจแแแกแ แฃแแแ แคแฃแแฅแชแแ skip_dma แกแชแแแแ แแก แฎแแแจแ:
แแฃ แแฅแแแ แแฌแแ แแแแแ firmware-แก แจแแกแแกแ แฃแแแแแแ, แฌแงแแแขแแก แฌแแ แขแแแแก แแแแแฃแจแแแแแแแก แแแแแก แแแแฅแแแแแแ แจแแแแซแแแแ แแฎแแแแ IDA แคแแแฏแแ แแจแ. แแแแแงแแแแแก แฎแแแแ Skipping wait ws2812...
. แแฎแแ firmware แแ แแแแแแแแแ แแ แแจแแก แแแแแขแแแ แแแแก แแแแแแแแฃแแแ.
แฃแ แแแแ แแฅแแแแแแ แแแฃแแแขแแ แแแ
แแแฃแแแชแแ แแแฃแแแชแแแก แแฃแแแกแแแแก แแแแแแแแ แกแแแแ แแฃแแแ, แ แแ แแแแแแฌแแแแก แกแแแแแแแแแ แแ แกแแฎแแ แฃแแ. แแแชแแแแแแ แกแแแแขแแ แแกแแ, แแฃ แแแฃแแแขแแ แ แแฎแแแ แแแ แแแแแแแแ แก แแแฎแกแแแ แแแแจแ แแแแแชแแแแแแก แแแแแฎแแแจแ แแ แซแแคแแแแก แฃแ แแแแ แแฅแแแแแแแก แแแแแแแแจแ.
แฉแแแ แแแฉแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแงแแ แแ แแแแแแแฃแ แแ แฃแ แแแแ แแฅแแแแแแ RTOS แแแแชแแแแแก แจแแ แแก. แแฅแแแ แฏแแ แฃแแแ แจแแแฉแแ แแ แแแแแก แจแแกแ แฃแแแแ, แแฃ แแก แแแจแแแแฃแแแ. แแฃ แแแแแฎแแ แคแฃแแฅแชแแแแ bluetooth_task_entry "LED" แแ แซแแแแแแก แแแแฃแจแแแแแแก แคแแแแแแจแ (แแแกแแแแ แแ 0x080057B8
), แจแแแแแ แจแแแแซแแแแ แแแฎแแ, แ แ แแ แแก แฏแแ แจแแฅแแแแแ แแ แจแแแแแ แแแแแแแแแ แกแแกแขแแแแก แ แแแจแ ledControlQueueHandle แ แแฆแแช แแแกแแฏแ.
แแฅแแแ แฃแแแ แแแแงแแแแ แฌแงแแแขแแก แฌแแ แขแแแ แชแแแแแแ แฌแแแแแแกแแแแก ledControlQueueHandleแแแแแแ แแแแก 0x20000624
แแ แแแแแ แซแแแแ แแแแแก แจแแกแ แฃแแแแ:
แจแแแแแแ, แแแฉแแ แแแ แแแ แแแแแ แแแฎแแแแ แแแกแแแแ แแแ 0x080057CA
แคแฃแแฅแชแแแก แแแแแซแแฎแแแแแแ osMailAlloc, แจแแแแแ แแแกแแแแ แแแ 0x08005806
แคแฃแแฅแชแแแก แแแแแซแแฎแแแแแแ osMailPut, แจแแแแแ แชแแขแ แฎแแแก แจแแแแแ - แแแกแแแแ แแแ 0x08005BD4
(แคแฃแแฅแชแแแก แแแแแซแแฎแแแแแแ osMailGet), แ แแแแแแช แแแฃแแแแแก แคแฃแแฅแชแแแก leds_task_entry (LED-task), แแแฃ แแแแชแแแแแ แจแแแชแแแแ แแ แแฎแแ LED-แแแแชแแแ แแแแฆแ แแแแขแ แแแ.
แแ แแแ แขแแแ แแแแ แจแแแแซแแแแ แแแแแแแแแ, แแฃ แ แแแแ แฃแ แแแแ แแแแแ RTOS แแแแชแแแแแ แแ แแแแแแแแแ.
แ แ แแฅแแ แฃแแแ, แกแแแแแแแแแแจแ, แแแแแแแแแแแก แฃแ แแแแ แแฅแแแแแแ แจแแแซแแแแ แฃแคแ แ แ แแฃแแ แแงแแก, แแแแ แแ แแแฃแแแขแแ แแก แแแแแงแแแแแแ, แแ แฃแ แแแแ แแฅแแแแแแแก แแแแแงแฃแ แแก แแแแแแแ แแแแแแแแ แจแ แแแแขแแแแแ แฎแแแแ.
ะะฐะฟััะบ ั Radare2
แแฅแแแ แแ แจแแแแซแแแแ แฃแแฃแแแแแแงแแ แแกแแแ แฃแแแแแ แกแแแฃแ แ แแแกแขแ แฃแแแแขแ, แ แแแแ แแชแแ Radare2.
แแแฃแแแขแแ แแแ แแแกแแแแแจแแ แแแแแ r2-แแก แแแแแงแแแแแแ, แแ แซแแแแแ แแกแ แแแแแแงแฃแ แแแ:
radare2 -A -a arm -b 16 -d gdb://localhost:23946 rhino_fw42k6.elf
แแแจแแแแ แฎแแแแแกแแฌแแแแแแ แแฎแแ (dc
) แแ แจแแแฉแแ แ แจแแกแ แฃแแแแ (Ctrl+C).
แกแแแฌแฃแฎแแ แแ, แแ แแ แแแกแแแแก, r2-แก แแฅแแก แแ แแแแแแแแ แขแแฅแแแแแก gdb แกแแ แแแ แแแ แแฃแจแแแแแกแแก แแ แแแฎแกแแแ แแแแก แแแแแแแแแ แแแแก แแแแ, แฌแงแแแขแแก แฌแแ แขแแแแแ แแ แแแแแฏแแแ แแ แแฃแจแแแแก (แแ แซแแแแแ ds
). แแแแแแแแแแแ, แ แแ แแก แแแแ แแแแแกแฌแแ แแแแ.
แกแแ แแแแ Eclipse-แแ
แแแฃแแแขแแ แแก แแแแแงแแแแแแก แแ แ-แแ แแ แแแ แแแแขแแ แจแแแฃแจแแแแแฃแแ แแแฌแงแแแแแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแ แแแ. แกแแชแฎแแแแกแแแแก, แฉแแแ แแกแแแ แแแแแแแงแแแแแ Rhino firmware-แก. แจแแแแซแแแแ แฉแแแแขแแแ แแแ firmware แฌแงแแ แแแแ
แฉแแแ แแแแแแแงแแแแแ Eclipse-แก แแแแ แแแแแแ, แ แแแแ แช IDE
แแแแกแแแแแก, แ แแ แแแฃแแแขแแ แแ แฉแแขแแแ แแแก Eclipse-แจแ แแแ แแแแแ แจแแแแแแแแ firmware, แแฅแแแ แฃแแแ แแแแแแขแแ แแแ แแแแขแ แ firmware=null
แแแฃแแแขแแ แแก แแแจแแแแแก แแ แซแแแแแแแ:
binkopycat -g 23946 -n rhino -l user -y modules -p firmware=null,tty_dbg=COM26,tty_bt=COM28
แแแแแ แแแแก แแแแคแแแฃแ แแชแแแก แแแงแแแแแ
Eclipse-แจแ แแแ แฉแแแ แแแแแฃ แแแจแแแแ - แแแแคแแแฃแ แแชแแแแแก แแแแแ แแแ... แคแแแฏแแ แแจแ, แ แแแแแแช แแฎแกแแแแ, แแแแงแแคแแแแแแจแ GDB แแแแ แแขแฃแ แแก แแแแแ แแแ แแฅแแแ แฃแแแ แแแแแแขแแ แแฎแแแ แแแแคแแแฃแ แแชแแ, แจแแแแแ "แแแแแแ แ" แฉแแแแ แแแ แแแฃแแแแแ แแแแแแแแ แ แแ แแแฅแขแ แแ แแ แแแ แแแ แแแแแ แแแแกแแแแก:
"Debugger" แฉแแแแ แแแ แแฅแแแ แฃแแแ แแแฃแแแแแ GDB แแ แซแแแแแ:
${openstm32_compiler_path}arm-none-eabi-gdb
แแกแแแ แจแแแงแแแแแ GDB แกแแ แแแ แแแ แแแแแแจแแ แแแแก แแแ แแแแขแ แแแ (แฐแแกแขแ แแ แแแ แขแ):
"แแแจแแแแแก" แฉแแแแ แแแ แฃแแแ แแแฃแแแแแ แจแแแแแแ แแแ แแแแขแ แแแ:
- แฉแแแ แแแแแแก แฉแแ แแแ แกแฃแ แแแแก แฉแแขแแแ แแแ (แแกแ, แ แแ แแฌแงแแแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แกแฃแ แแแ แฉแแแขแแแ แแแแ แแแฃแแแขแแ แจแ);
- แฉแแแ แแแแแแก แฉแแ แแแ แกแแแแแแแแแแก แฉแแขแแแ แแแ;
- แแแแแแขแแ แแแจแแแแแก แแ แซแแแแแ:
set $pc = *0x08000004
(แแแแงแแแแ แแแแแแฃแขแแ แแก แ แแแแกแขแ แ แแแแจแแแแแแแ แแแฎแกแแแ แแแแแแ แแแกแแแแ แแแ0x08000004
- แแแกแแแแ แแ แแแแฎแแแ แแฅ ResetHandler).
แจแแแแจแแแแแฃ แแ แแกแฃแ แ firmware แคแแแแแก แฉแแแแขแแแ แแแ Eclipse-แแแ, แแแจแแ แแคแชแแแแ แกแฃแ แแแแก แฉแแขแแแ แแแ ะธ แแแฃแจแแแ แแ แซแแแแแแแ แแ แแ แแก แกแแญแแ แ แแแแแแแแ.
แแแแแ แแแแก แแแฌแแแแฃแแแแแก แจแแแแแ, แจแแแแซแแแแ แแแฃแจแแแ แแแแแ แแแแก แ แแแแแจแ:
- ะฟะพัะฐะณะพะฒะพะต ะฒัะฟะพะปะฝะตะฝะธะต ะบะพะดะฐ
- แแแขแแ แแฅแชแแ แฌแงแแแขแแก แฌแแ แขแแแแแแแ
แจแแแแจแแแ. Eclipse-แก แแฅแแก, แฐแ... แ แแฆแแช แฃแชแแแฃแ แแแแแ... แแ แแฅแแแ แฃแแแ แแชแฎแแแ แแ แแแแแแ แแ แแแ. แแแแแแแแแ, แแฃ แแแแแ แแแแก แแแจแแแแแกแแก แแแแแฉแแแแแ แจแแขแงแแแแแแแ โแแ แแ แแก แฎแแแแแกแแฌแแแแแ แฌแงแแ แ โ0x0โณ-แกแแแแกโ, แแแจแแ แจแแแกแ แฃแแแ แแแแแฏแ แแ แซแแแแแ (F5)
แแแแก แแแชแแแแ, แ แแ แแแกแแแแ
แแจแแแแแฃแ แ แแแแแก แแแฃแแแชแแ แซแแแแแ แกแแแแขแแ แแกแ แ แแ แแ แแก. แแแฌแงแแแแแแแแก แแแแแแแแแ แแกแแแแก แจแแกแแซแแแแแแ แฎแแแแ firmware-แแก แแแแแ แแแ แ แแแแฃแ แ แแแฌแงแแแแแแแแก แแแ แแจแ. แแแแแแแแ แแกแแแแก แแก แแ แแก แแแแแก แแแแแแแฃแ แ แแแแแแแแก แฉแแขแแ แแแแก แจแแกแแซแแแแแแแ, แ แแช แงแแแแแแแแก แแ แแ แแก แจแแกแแซแแแแแแ แแแฌแงแแแแแแแแแแช แแ.
แฉแแแ แแแกแฃแ แก แแแแแฌแแแแ แกแแแชแแแแแกแขแแแก แฎแแแกแแฌแงแ, แ แแแแแแช แแ แแก แแแกแแฎแแ แฎแแแแแ, แแแแแแ แแ แแแ แขแแแ แแ แแ แแแแแฎแแแก แแแ แซแแแแกแฎแแแแแกแ แแ แแ แแก แแแงแแแแแแกแ แแ แแแจแแแแแก.
แแแฌแแ แแ แแแแแแขแแ แแแจแ แแฅแแแแ แแแแแชแแแแแแแก แจแแกแแฎแแ แขแแฅแแแแแก แแแฃแแแขแแ แแแแก แแแแแงแแแแแแ. แแแแแขแแแแแแ แแแแฎแแแแแแ แแ แกแแแแแแแแแแ แแแแแกแฃแฎแแแ แแแแฎแแแแแ.
แแแแแแแแฎแแแจแ แแแแแฌแแแแแแ แจแแฃแซแแแแ แแฎแแแแ แแแ แแแแกแขแ แแ แแแฃแ แแแแฎแแแ แแแแแแก.
แ แแกแแแแก แแงแแแแแ แแแฃแแแขแแ แก?
-
แแแแฃแจแแแแ (แแแแแ แแแ) firmware
-
แแ แแกแฌแแแแแ firmware-แก
-
แแแฌแงแแ แแแแแจแแแก (แแแแแ, แกแแแ, PSP)
-
แกแฎแแ แ แแแ (แแแฌแแ แแ แแแแแแขแแ แแแจแ)
แแแกแชแ แฎแแ 7 แแแแฎแแแ แแแแแแ. 2 แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แ แ แแ แแแ แแแฃแ แฃแแ แฃแแแแแงแแคแแก แแงแแแแแ แแจแแแแแฃแ แ แแแแแก แแแฃแแแชแแแกแแแแก?
-
QEMU
-
Unicorn แซแ แแแ
-
Proteus
-
แกแฎแแ แ แแแ (แแแฌแแ แแ แแแแแแขแแ แแแจแ)
แแแกแชแ แฎแแ 6 แแแแฎแแแ แแแแแแ. 2 แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แ แแก แแแฃแแฏแแแแกแแแแก แแกแฃแ แแแแแแ แแแฃแแแขแแ แจแ, แ แแแแแกแแช แแงแแแแแ?
-
แกแแฉแฅแแ แ แแแแแ
-
แแแงแแแแแแก/แแแจแแแแแก แกแแแแ แขแแแ แแแแแ
-
แแ แแแแแ แแแขแ แแแ แแแแขแ แแแฃแแแขแแ แแแ แฃแ แแแแ แแแแแกแแแแก (API, แแแแแแแ)
-
แงแแแแแคแ แแ แแแแงแแคแแแ แแแ
-
แกแฎแแ แ แแแ (แแแฌแแ แแ แแแแแแขแแ แแแจแ)
แแแกแชแ แฎแแ 8 แแแแฎแแแ แแแแแแ. 1 แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แฌแงแแ แ: www.habr.com