書き直された文: 原理は、ユニコーンの「mem フック」機能を使用して、so がメモリにロードされた後に純粋なデータをダンプすることです。 2 つの方法があります:
方法 1: getBackend()
を使用して Unicorn のメモリ フック メソッドをコピーします。 。
方法 2: traceCode()
を使用して、指定されたメモリ セグメントをトレースし、メモリ データをフックします。
getBackend
は Unicorn
によって駆動されるため、dbg
With# のユニコーン エンジンでのみ使用できることに注意してください # #getBackend たとえば、
emulator.getBackend().hook_add_new(new WriteHook() { @Override public void hook(Backend backend, long address, int size, long value, Object user) { System.out.println(Long.toHexString(address) + "----" + size + "----" + value); byte[] bytes = long2Bytes(value, size); modifyMap.put(address, bytes); } }, 0, Long.MAX_VALUE, null);
Java
_ Copy_
このようにして、指定した時刻にメモリ データをフックできます。
以上がJava unidbg Ollvm文字列の暗号化と解析方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。