Python套接字-send()之后立即的recv()导致InternetReadFile()不返回

时间:2019-07-19 18:39:18

标签: python sockets windows-7

我正在尝试分析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中的状态仅表明它正在运行并且正在创建新线程。我不确定是什么问题。有什么想法吗?

Olly Screenshot

Olly Screenshot

[更新]

因此,我调试并在代码的while循环中发现了问题。特别是,循环尝试在发送后立即接收数据,这似乎导致“ InternetReadFile”被卡住。 conn.recv()之后的conn.send()似乎是问题所在。有什么想法吗?

0 个答案:

没有答案