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]