Hermes

Hermes - JS Engine. ΠŸΠ΅Ρ€Π΅Π³ΠΎΠ½ΡΠ΅Ρ‚ jS Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ ΠΎΡ‚ этого всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅ быстрСС

https://facebook.github.io/react-native/docs/hermes release Π±ΠΈΠ½Π°Ρ€ΠΈ: https://github.com/facebook/hermes/releases

О ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π² React Native ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ https://facebook.github.io/react-native/docs/hermes

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ React Native Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ index.android.bundle Π±ΡƒΠ΄Π΅Ρ‚ сСриализован (Π±ΠΈΠ½Π°Ρ€Ρ‰ΠΈΠ½Π°)

$ file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 62

$ hermes -b --dump-bytecode index.android.bundle
Error deserializing bytecode: Wrong bytecode version. Expected 74 but got 62%

$ hermes -version
74

Π•ΡΡ‚ΡŒ нСсколько Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² hermes:
v0.8.0 - 83
v0.5.0 - 74
v0.3.* - 72
v0.2.1 - 62

TODO: ΠΏΠΎΡ€Π΅ΡΠ΅Ρ€Ρ‡ΠΈΡ‚ΡŒ

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ android (ΠΈΠ»ΠΈ ios, ΠΈΠ»ΠΈ web) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с инструмСнтациСй ΠΈ Π² Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ исслСдуСмый index.android.bundle

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сильно Π»Π΅Π³Ρ‡Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ происходит Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (ΠΊΠ°ΠΊΠΈΠ΅ api ΠΈ Ρ‚ΠΏ), Ρ‡Π΅ΠΌ ΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π°Π½Π΄Π»

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для исслСдования ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΡ„ΠΎΡ€ΠΊΠ° Expo.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π±Π°Π½Π΄Π» (Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ для android, для web β€” js Π±Π°Π½Π΄Π» получился β€” todo Π³Π»ΡΠ½ΡƒΡ‚ΡŒ)

ΠŸΡ€ΠΈ этом собираСтся ΠΈΠΌΠ΅Π½Π½ΠΎ hermes-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (hbc β€” собранный Π±Π°Π½Π΄Π» с Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ)

Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π±ΠΈΠ»Π΄ (с Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ) ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ:

Tools

ΠΎΡ„ Π±ΠΈΠ½Π°Ρ€ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС: https://github.com/facebook/hermes/releases

Π’ΡƒΠ΄Π° входят:

  • hbcdump

  • hdb

  • hermes

  • hermesc

  • hvm

hermes

hbcdump

hbcdump β€” Hermes bytecode disassembler

Зная ID строк, инструкций, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Ρ‡Π΅Ρ€Π΅Π· hbctool, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния

hdb

JavaScript command line debugger

hermesc

Standalone Hermes compiler. This can compile JavaScript to Hermes bytecode, but does not support executing it.

hvm

Standalone Hermes VM. This can execute Hermes bytecode, but does not support compiling it.

hbctool

hbctool Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ дизассСмблинга (Π² сравнСнии с hbcdump) ΠΈ возмоТности ΠΏΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π°.

ПослС распаковки Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°: instruction.hasm (дизассСмблированный ΠΊΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ листингом), metadata.json (содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π³Π΄Π΅ находятся ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΏ), string.json (строки ΠΈ ΠΈΡ… ID).

hermes-dec

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ P1sec: https://github.com/P1sec/hermes-dec/

[Frida] Android

ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ядру, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π΅ смог ΠΏΠΎΠΊΠ°

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ jsFactory, ΠΎΠ΄Π½Π°ΠΊΠΎ, всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ смог Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² этом контСкстС. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΄Π°Π»Π΅Π΅ - Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ React Debug, ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· frida.

Last updated

Was this helpful?