好吧,我有一个相当可疑的文件,它甚至对我的电脑进行了一些控制。但是,我需要它,所以我决定反编译它,看看它是否损害我的电脑,我可以把它删除吗?
我使用了几个反编译器,但我目前使用的是 IDA 64,它说该文件可能有几种格式:pe64.dll、dos64.dll、二进制文件。 顺便说一句,它似乎有所有这些格式。
当我将其反编译为 MS-DOS EXE 时,我得到了:
最后我在段 seg000 处只得到了一个函数“start”,里面有这段代码
; Segment type: Pure code
seg000 segment byte public 'CODE' use16
assume cs:seg000
assume es:nothing, ss:seg000, ds:nothing, fs:nothing, gs:nothing
; Attributes: noreturn
public start
start proc near
push cs
pop ds
assume ds:seg000
mov dx, 0Eh
mov ah, 9
int 21h ; DOS - PRINT STRING
; DS:DX -> string terminated by "$"
mov ax, 4C01h
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
start endp ; AL = exit code
当我将其反编译为 MS-DOS EXE 时,我得到了:
现在我得到了
选择“可移植可执行文件”。
事实是,为了与 DOS 兼容(当它相关时),每个 PE 可执行文件都有一个 DOS MZ 可执行标头和一个小的 thunk DOS 程序,该程序打印诸如“此程序无法在 DOS 模式下运行”之类的信息并退出。
因此,每个有效的 Windows 可执行文件也是有效的 DOS 可执行文件——因此 IDA 会这样检测它。
Windows 不运行此 thunk 程序,因此即使文件包含恶意代码,也不能在此处查找它。