使用的 Plugin 列表

  • ret-sync

介紹 Plugin

ret-sync

這是必裝的神器,可以直接同步 ida pro 和其他 debugger (我這裡用 x64dbg)

過去一般課程會說要先調整 base address ,然後逆向分析會兩邊切換看動靜態分析

而用這工具可以直接兩邊即時同步,這樣可以直接 ida pro 分析完, ida pro 上面下斷點,然後一些要確認的地方,直接回到 x64dbg 用 run 下去跑就好

分析會變得超級快


安裝分為 ida pro 跟 x64dbg 都要安裝

這邊先以 ida pro 的部分

可以直接參考 github

抓檔案和資料夾,放到自己的 Plugin 即可

  • Syncplugin.py
  • retsync (資料夾)

我自己路徑是: C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins
放完如下圖

image

他的執行是透過 SyncPlugin.py 會去使用 retsync 資料夾裡面的 Python 檔案

然後他目前預設抓 python 2 的版本,雖然支援 3 ,但我自己跑起來會出錯

具體可以看一下是 retsync/rsconfig.py 這個檔案在 245 行的位置

我這邊放 rsconfig.py 部分程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
PY_WIN_DEFAULTS = set(["C:\\Python27", "C:\\Python27-x64"])

# default local/user paths Windows platforms
PY_WIN_LOCAL_DEFAULTS = set()

PY3_RELEASES = ["37", "38", "39", "310"]

for py_rel in PY3_RELEASES:
PY_WIN_DEFAULTS.add("C:\\Program Files\\Python%s" % py_rel)
PY_WIN_DEFAULTS.add("C:\\Program Files (x86)\\Python%s-32" % py_rel)
PY_WIN_LOCAL_DEFAULTS.add("%%LOCALAPPDATA%%\\Programs\\Python\\Python%s" % py_rel)
PY_WIN_LOCAL_DEFAULTS.add("%%LOCALAPPDATA%%\\Programs\\Python\\Python%s-32" % py_rel)


# default paths Linux/Mac OS X platforms
PY_LINUX_DEFAULTS = ("/usr/bin",)


# retsync plugin needs a Python interpreter to run broker and dispatcher
def get_python_interpreter():
# when available, use spawn module to search through PATH
if spawn_module:
interpreter = distutils.spawn.find_executable('python')
if interpreter:
# discard Universal Windows Platform (UWP) directory
parts = os.path.split(interpreter)
if (len(parts) > 1 and parts[-2].endswith('WindowsApps')):
rs_log("Warning, python.exe was detected but is installed as a Windows App (UWP).\n"
" Dir: \"%s\"\n"
" This plugin requires a Windows desktop program in order to work properly.\n"
" Searching for other installations.\n" % interpreter)
else:
return interpreter

# otherwise, look in various known default paths
if sys.platform == 'win32':
PYTHON_BIN = 'python.exe'
PYTHON_PATHS = PY_WIN_DEFAULTS

# add paths from %LOCALAPPDATA%
for ladp in PY_WIN_LOCAL_DEFAULTS:
PYTHON_PATHS.add(os.path.expandvars(ladp))

elif sys.platform.startswith('linux') or sys.platform == 'darwin':
PYTHON_BIN = 'python'
PYTHON_PATHS = PY_LINUX_DEFAULTS

else:
rs_log("plugin initialization failed: unknown platform \"%s\"\n"
" please fix PYTHON_PATH/PYTHON_BIN in %s/rsconfig.py\n"
% (sys.platform, PLUGIN_DIR))

raise RuntimeError

上面可以看到他會先抓 python27 路徑,然後底下 if 判斷事先看是不是 win32 之後看是否是 linux 不然就跳錯誤

所以像我的 python 3.13 就出問題,可以直接寫死自己的 python 位置即可

我的作法很簡單,直接在 line 213 那邊加上一個 return 放自己的 python 位置,如下

1
2
3
def get_python_interpreter():
# when available, use spawn module to search through PATH
return "C:\\Users\\user\\Desktop\\my_tool\\Python313_7\\python.exe"

上面 return 的是我的 python 位置,就放在函數: get_python_interpreter() 裡面的第一個,其他都不用動,這樣 ida pro 的 Plugin 我執行就正常

環境資訊:

  • windows 11 x64
  • ida pro 9.1
  • python 3.13
  • date: 2025.09.24

x64dbg 就很簡單,單純把 plugin 放到對應資料夾即可

但 x64dbg 目前作法是要自己開 vs 編譯,或有找到他人編譯好的 (時間: 2021 年),我自己測試是可以

下載點