重寫後的句子: 原理在於使用unicorn的「mem hook」功能,在so載入到記憶體後將純淨的資料轉儲出來。有兩種方法:
#方法1: 利用getBackend()
來複刻Unicorn 的內存hook 方法。
方法2: 利用traceCode()
來 trace 指定記憶體段, hook 記憶體資料。
注意,getBackend
是用Unicorn
來驅動的, 所以只能用在dbg 的unicorn 引擎上
以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
_ 複製_
這樣就可以hook 在指定時刻hook記憶體資料了。
當然可以加以封裝一個GUI 這樣就可以滑鼠點點就可以完成工作了
以上是java unidbg Ollvm字串加密解析的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!