我使用eicar.com文件并使用逆向工程工具进行游戏。我希望能够反汇编和重新组合这个文件。我接近了,但仍然存在一些我无法弄清楚的问题。拆卸和重新组装,如何在终端中正确管道?
这是原来的eicar.com
ASCII文件。
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
使用udcli udcli -noff -nohex eicar.com > stage1.asm
我结束了这个x86汇编
pop eax
xor eax, 0x2550214f
inc eax
inc ecx
push eax
pop ebx
xor al, 0x5c
push eax
pop edx
pop eax
xor eax, 0x5e502834
sub [edi], esi
inc ebx
inc ebx
sub [edi], esi
jge 0x40
inc ebp
dec ecx
inc ebx
inc ecx
push edx
sub eax, 0x4e415453
inc esp
inc ecx
push edx
inc esp
sub eax, 0x49544e41
push esi
dec ecx
push edx
push ebp
push ebx
sub eax, 0x54534554
sub eax, 0x454c4946
and [eax+ecx*2], esp
sub ecx, [eax+0x2a]
最后,使用此命令把它重新走到一起与nasm
,nasm stage1.asm -o stage2
我结束了......
fXf5O!P%[email protected][4\fPfZfXf54(P^fg)7fCfCfg)7^O<8d>^R^@fEfIfCfAfRf- STANfDfAfRfDf-ANTIfVfIfRfUfSf-TESTf-FILEfg!$Hfg+H*
在这种情况下,我将从一个ASCII文件开始,并以一个包含大量额外垃圾的bin文件结束。
我在这里错过了什么?我如何最终得到原始的ASCII字符串并且具有正确的文件类型?
编辑: Per @Ross Ridge的建议,他指出我正在拆分16位文件作为32位文件,它已成功清理了字符串,但是他的文件类型仍然被错误地输出为二进制文件。
首次定位:udcli -16 -noff -nohex eicar.com > stage1.asm
,以获得正确的输出字符串。
结果X5O!P%@AP[4\PZX54(P^)7CC)7^O<8d>"^@EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
还是有点垃圾数据不存在于原始的,但非常接近。
您将其拆分为32位代码并将其组装为16位代码。鉴于扩展名,你应该将其拆分为16位代码。 –
@罗斯里奇你的权利!清理了字符串。我将编辑原始问题,但输出文件类型仍然不正确。我发现我可以用'nasm'明确地改变这个,但是我没有看到一个ASCII选项。是否有其他工具或步骤我应该考虑? –
它看起来像你正在使用正确的输出文件类型与NASM,二进制文件类型。你可以用'-f bin'明确指定它。 ASCII文件是只包含ASCII字符的二进制文件,而您的源二进制文件“eicar.com”恰好只包含ASCII字符。 –