32位无壳,ida打开
下面是一段混乱的代码,上面v2取了40107c的地址,在下面异或加密,判断为smc
参数为v3,查看参数来源
监听本地127.0.0.1 2222端口,接受一个char类型的参数buf
试着打开程序发送一下
import sys
import os
import socket
ip = '127.0.0.1'
port = 2222
os.startfile("C:\Users\My\Desktop\greek_to_me.exe")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.send(chr(1))
data = s.recv(1024)
s.close()
print data
程序直接执行结束,显示失败字样
更改脚本遍历所有情况
import sys
import os
import socket
ip = '127.0.0.1'
port = 2222
for i in range(256):
os.startfile("C:\Users\My\Desktop\greek_to_me.exe")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.send(chr(i))
data = s.recv(1024)
s.close()
print data
if 'Congratulations' in data:
print "%x" % i
break
注意:python3无法发送字符类型信息,而转成byte类型又无法大于128。所以必须使用python2。
遍历得到结果为a2
动调看看smc结果
循环后下断点,手动c分析
出现flag