我正在尝试分析Windows 7上的一个旧恶意软件。我对其功能进行了反向工程,它似乎是一个机器人,它从现已失效的服务器接收命令。因此,我正在Olly中调试该恶意软件,并使用python脚本与之建立通信。我的第一个任务是成功接收请求并发送响应。我相信这是完成任务的代码段。
try:
conn, addr = skt.accept()
except socket.error as error:
continue
print("Connected to " + str(addr))
while True:
data = conn.recv(4096)
print(data)
conn.send("HTTP/1.1 200 OK\n"+"Content-Type: text/html\n"+"\n"+"<h1>Bad Request (Invalid Hostname)</h1>")
print("Closing connection to " + str(addr))
conn.close()
虽然我能够接收到请求,但恶意软件仍然无法接收响应。特别是,它停留在对InternetReadFile
的调用中。该函数在缓冲区中收到我的响应,但调用未返回。 Olly中的状态仅表明它正在运行并且正在创建新线程。我不确定是什么问题。有什么想法吗?
[更新]
因此,我调试并在代码的while循环中发现了问题。特别是,循环尝试在发送后立即接收数据,这似乎导致“ InternetReadFile”被卡住。 conn.recv()
之后的conn.send()
似乎是问题所在。有什么想法吗?