FASM 可执行文件和 AV 误报

问题描述

我目前正在使用 FASM 来编译 Windows 可执行文件。但是,我注意到 AV 误报率很高,我正在努力了解和解决这一问题。

我的方法是创建一个最小可执行文件并尝试“修复”格式,直到 AV 不标记它。目标是了解是什么触发了 AV 的怀疑。

VirusTotal result for the below code

format PE GUI 4.0
entry start
include 'win32ax.inc'

section '.text' code readable executable
start:
    invoke  MessageBoxA,Message,Title,0
    invoke  ExitProcess,0

section '.data' data readable writeable
    maybe_there_should_be_a_rw_section_too dd ?

section '.rdata' data readable
    Title           db 'Test',0
    Message         db 'Hello,World!',0

section '.idata' import data readable writeable
    library \
        ntdll,'ntdll.dll',\
        kernel32,'kernel32.dll',\
        user32,'user32.dll'
    import kernel32,\
        ExitProcess,'ExitProcess'
    import user32,\
        MessageBoxA,'MessageBoxA'

代码是最小的可执行文件。我尝试了以下方法使其对 AV 看起来更“正常”:

  • 添加带有 VersionInfo 和清单的 .rsrc 部分
  • 添加一些额外的进口(也许进口太少看起来可疑?)

到目前为止,这并没有降低误报率。

这就是在 VirusTotal 上引发更多误报的原因:

  • 代码部分添加 1 KB 的重复 mov eax,0 操作码
  • 添加具有 1 KB 数据的 RT_RCDATA
  • 将 1 KB 的数据添加到 .data 或 .rdata 部分

问题:是否有任何建议或好的做法可以避免不使用数字签名的误报?尤其是在向程序集中添加更多代码或数据时,许多 AV 标记可执行文件,这肯定会导致抱怨。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)