unicorn解決OLLVM字符串混淆通用方法是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
AndroidNativeEmu 在面對沒有加殼的 so 還是挺好用的,不過遇到加殼的 so,就會力不從心的,需要 dbg 才行。
解決字符串混淆思路,其實和 frida 讀取混淆字符串方法一樣,在內存中字符串是被解密狀態的,所以在內存中拿就可以了, 而且 Unicorn
提供了 unicorn.UC_HOOK_MEM_WRITE
來 hook 操作內存中的數據
干貨代碼如下:
import logging import sys import os import unicorn import struct from androidemu.emulator import Emulator sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) logging.basicConfig( stream=sys.stdout, level=logging.DEBUG, format="%(asctime)s %(levelname)7s %(name)34s | %(message)s" ) logger = logging.getLogger(__name__) emulator = Emulator(vfp_inst_set=True) # 初始化模擬器 # 字符串解密 so_file = "test/test.so" modify_map = {} # 接收字典 def UC_HOOK_MEM_WRITE(mu, _type, address, size, _value, user_data): byte_array = struct.pack("I", value)[:size] modify_map[address] = byte_array return # 加載預設 so emulator.load_library("example_binaries/libdl.so", do_init=False) emulator.load_library("example_binaries/libc.so", do_init=False) emulator.load_library("example_binaries/libstdc++.so", do_init=False) emulator.load_library("example_binaries/libm.so", do_init=False) lib_module = emulator.load_library(so_file, do_init=True) # do_init 需要設置為 true emulator.mu.hook_add(unicorn.UC_HOOK_MEM_WRITE, UC_HOOK_MEM_WRITE) # 準備 UC_HOOK_MEM_WRITE 回調解決字符串加密 """ 讀出代碼,并將被加密的字符串修改回去 """ with open(so_file, 'rb') as f: content = f.read() print(modify_map) for i in modify_map: value = modify_map[i] base = lib_module.base # 加載基質 if base <= i <= (base + lib_module.size): # 利用加載地址判斷 offset = i - base - 0x1000 # 并不是連續加載,是文件中的偏移 content = content[:offset] + value + content[offset + len(value):] down_file = so_file + ".fix" with open(down_file, 'wb') as df: df.write(content) print('寫出完畢', down_file)
**<br>修改 so_file = so文件地址
運行后就會導出解密后的 so<br>注意事項:
有的時候so有交叉調用,無法直接解密,需要hook住調用函數,來解決異常
關于unicorn解決OLLVM字符串混淆通用方法是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。