book.jpg x64 Native Tools Command PI x + 2.4 实 战 案 例 : 为 Linux 版 Avast 编 写 Python binding 27 Q:\write-code\ocr>ocr.exe book. jpg #t/usr/bin/python OCR model loaded ... import socket Running ocr pipeline ... SOCKET_PATH ="/var/run/avast/ncan.nock' Recognize 62 lines class CBasicAvastClienti 00: 2.4 det _init_(self, socket_name) selt.socket_name = socket_name 01: 实 战 案 例 : 为 Linux 版 Avast 编 写 Python binding self.s - None 02: 27 def connect (self): 03: #!/usr/bin/python gelf.s = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM) self.s.connect(self.socket_name) 04: import socket banner = selt.s.recv(1024) 05: SOCKET_PATH = "/var/run/avast/scan.sock" return repr (banner) 06: class CBasicAvastClient: def close(self): self.s.send("QUIT\n") 07: def init_(self, socket_name): def main(): 08: self.socket_name = socket_name cli = CBasicAvastClient (SOCKET_PATH) 09: self.s = None print (cli.connect ()) cli.close() 10: def connect (self) : 11: self.s= socket. socket (socket.AF_UNIX, socket. SOCK_STREA if _name == _main ": main () 12: self.s.connect(self.socket_name) 试 着 运 行 一 下 脚 本 : 13: banner = self.s.recv(1024) $ python basic_avast_clil.py 14: return repr (banner) '220 DAEMON\rin' 15: def close(self): 一 切 工 作 正 常 。 编 写 的 程 序 成 功 连 接 到 了 后 台 服 务 器 , 接 着 又 成 功 关 闭 了 连 接 。 接 下 来 16: self.s.send("QUIT\n") 们 要 深 入 探 索 更 多 的 命 令 , 而 其 中 最 有 意 思 的 一 个 是 : 分 析 样 本 文 件 或 目 录 的 命 令 。 17: def main(): 在 地 址 0x0804083B 处 , 有 一 次 有 趣 的 函 数 调 用 过 程 : 18: cli = CBasicAvastClient (SOCKET_PATH) 19: print(cli.connect()) .text:08048D34 mov edx, [ebx+esi*4] .text: 08048D37 eax, [esp+0BCh+socket] 20: cli.close () mOv .text : 08048D3B cal scan path 21: if 因 为 有 部 分 调 试 符 号 的 帮 助 , 我 们 可 以 轻 而 易 举 地 确 定 这 个 函 数 的 功 能 : 扫 描 一 个 指 定 22: _name 接 下 来 , 让 我 们 来 看 看 scan_path 函 数 : 23: == "main ": 24: main() .text: 08049F00 scan_path proc near : CODE XREF: main+40B 25: 试 着 运 行 一 下 脚 本 : .text:08049F00 ; .text:08049EF1 .text: 08049F00 26: $ python basic_avast_clil.py .text: 08049F00 name = dword ptr -103Ch 27: '220 DAEMON\r\n' text: 08049F00 resolved = dword ptr -1038h 28: 一 切 工 作 正 常 。 编 写 的 程 序 成 功 连 接 到 了 后 台 服 务 器 , 接 着 又 成 I .text:08049F00 n = dword ptr -1034h .text: 08049F00 var_1030 = dword ptr -1030h 29: 们 要 深 入 探 索 更 多 的 命 令 , 而 其 中 最 有 意 思 的 一 个 是 : 分 析 样 本 文 text:08049F00 var_102C = dword ptr -102Ch 30: 在 地 址 0x0804083B 处 , 有 一 次 有 趣 的 函 数 调 用 过 程 : text: 08049F00 var_1028 = dword ptr -1028h 31: .text: 08048D34 .text: 08049F00 var_1024 = dword ptr -1024h 32: mov 33: edx, [ebx+esi*4]