既然这样的话,通过PE文件的特定格式就能找到一些端倪了
比方说magicnumber,不过它有些短,所以当密钥太长的话就无能为力了
PE头中有一个dos stub程序,一般情况下运行会显示”this program cannot be run in the dos mode”
这个字符串就足够长,可以用来破译了
还可以使用在程序末尾出现的00,它们足够长,而且源码相同易于识别:
key = "letsplaychess"
f = open("ransomware/file", "rb")
data = f.read()
exe = []
for n in range(len(data)):
exe.append(((~data[n] ^ ord(key[i%len(key)])) % 256))
f.close()
f = open("ransomware/file_de.exe", "wb")
f.write(bytes(exe))
f.close()
运行生成的程序就能得到flag
另外在去花指令的环节,参考得知
还可以用IDAPython脚本
或者直接Python读二进制来去除
[Python] 纯文本查看复制代码
data = open(‘run.exe’,’rb’).read()
data = data.replace(‘\x60\x61\x90\x50\x58\x53\x5b’,’\x90\x90\x90\x90\x90\x90\x90’)
open(‘run_dejunk.exe’,’wb’).write(data)
key = "letsplaychess"
f = open("file", "rb")
data = f.read()
exe = ''
for i in range(len(data)):
exe+=(chr(((~ord(data[i])) ^ (ord(key[i%len(key)]))) % 256))
f.close()
f = open("file_de.exe", "wb")
f.write(bytes(exe))
f.close()