为什么要学习加密呢?
shellcode在经过加密时,如果没有做文件分离直接在源文件内。编译exe落地经过杀软扫描,扫描到了shellcode对比一下特征库或者看你行为就很容易被杀。
(个人看法,有不对的感谢大佬指正)
正文
xor在汇编里面是起异或作用的。
单字符作为key的异或加密 跟凯撒加密是一样的。
在汇编内异或是这样操作的
0^0=0
0^1=1
1^0=1
1^1=0
观察后我们会发现,异或相同为0,不同为1。
那么这里会有一个疑惑,在加密脚本中密文长度和密钥长度不一致怎么办呢?
那么就需要将密钥自身复制拼接到与密文长度一致再开始进行异或操作。
知道了这些我们就可以尝试写一个python脚本进行一些加密操作了。
1 def xor_encrypt(data, key): 2 result = [] 3 key_len = len(key) 4 5 for i, byte in enumerate(data): 6 # 获取当前循环使用的密钥字节 7 key_byte = key[i % key_len] 8 # 执行异或操作 9 encrypted_byte = byte ^ key_byte 10 # 添加到结果列表 11 result.append(encrypted_byte) 12 13 return bytes(result) 14 15 raw_shellcode=b"\xfc\x48\x83\xe4\xf0\xe8\xc8" 16 key = b"cai" 17 18 # 加密原始数据 19 encrypted = xor_encrypt(raw_shellcode, key) 20 21 # 格式化输出 22 formatted = [] 23 for byte in encrypted: 24 # 格式化为0xXX形式 25 formatted.append(f"0x{byte:02x}") 26 27 # 逗号分隔输出 28 print(", ".join(formatted))
浙公网安备 33010602011771号