Delphi 编译出来的程序被小红伞报病毒 TR/Spy.Banker.Gen4 [trojan]

今天碰到非常奇怪的问题,正常开发的单元代码,在A程序编译出来没有问题,将相同的单元引用到B程序编译出来就被小红伞报病毒TR/Spy.Banker.Gen4 [trojan],自动隔离删除。

今时今日的防病毒软件,实在是让人纠结不已,今天一个下午的排查代码,最后发现问题居然是出现在调用Windows API的地方,总体有两处代码会出现报病毒:

问题代码1:

//单元1声明引用API函数
function GetCPInfoEx(CodePage: UINT; Flags:DWORD;
  var lpCPInfo: TCPInfoEx):BOOL;stdcall;
  external kernel32 Name
  {$IFDEF UNICODE}
  ‘GetCPInfoExW‘;
  {$ELSE}
  ‘GetCPInfoExA‘;
  {$ENDIF}

//单元2
  // 这里一旦调用 单元1的GetCPInfoEx,则马上报病毒,
  if GetCPInfoEx(FCodePage, 0, LCPInfo) then

  // 而修改为调用Windows单元的 GetCPInfoEx 则不会
  if Windows.GetCPInfoEx(FCodePage, 0, LCPInfo) then

// 总得来说非常奇怪,难道在单元1引用GetCPInfoEx就会生成病毒特征码?

问题代码2:

单元3:
//一旦调用EnumSystemCodePages则马上报病毒
Windows.EnumSystemCodePages(@DoEnumCodePageCallBackEx, dwFlag);

最后实在没辙了,全部改为动态加载DLL并调用API。

时间: 2024-10-13 11:46:24

Delphi 编译出来的程序被小红伞报病毒 TR/Spy.Banker.Gen4 [trojan]的相关文章

android编译surface c++程序时,报错缺少.o文件

近期在研究Android的surface系统,写了个小demo,编译的时候.一直报错,说是缺少.o文件,可是看代码一直没问题.后来发现原来是在window下编写的,然后在linux编译的时候,后缀多了^M.所以导致编译只是. 事实上提示类似的错误.肯定是代码那块地方出现了类似的错误.不知道的,查起来能累死,知道的非常快的就能知道怎么查. 顺便把源代码贴写. testsurface.cpp #include <unistd.h> #include <string.h> #includ

减小Delphi XE5编译出来的程序体积

. 默认Delphi XE, XE2, XE3,XE4,XE5, XE6 ... 编译出来的程序体积很大. 一般用两个方法可以很大程度上减少程序体积. 一.在工程中用编译指令禁用RTTI 禁用的方法很简单,就是要在工程 的Uses语句前添加下面的定义就可以了: { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } {$IF CompilerVersion >= 21.0} {$WEAKLIN

运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory -------------------------------------------------------------------------------------------------------------------------------------

把EXE可执行文件等作为资源包含在Delphi编译文件中

摘自我自己过去写的一段心得. 1.编辑资源文件 *.RCWave: 资源文件是声音文件:RCDATA: 二进制数据AVI: AVI动画:ICON: 图标文件:BITMAP: 位图文件:CURSOR: 光标文件:比如:MyWav WAVE "FileName.Wav" 2.使用Brcc32转化为*.RES文件 3.在工程中引用RES文件比如:{$R MyRes.RES} 4.运行时读入    通过TResourceStream ,比如TResourceStream.Create(HIns

Delphi XE7的安卓程序如何调用JAVA的JAR,使用JAVA的类?

本文使用工具和全部源码下载: http://download.csdn.net/detail/sunylat/8190765 为什么我们要在Delphi XE7的安卓程序调用Java的JAR,使用JAVA的类?如果能够这样做,那么就意味着我们把Delphi开发的安卓程序扩展到了一个更大的开发范围了,理论上可以调用任意JAVA编写的代码,对于同时精通Delphi和JAVA的程序员来说,简直如虎添翼!! 我差不多用了一天时间吧,最终在老猫的帮助下,成功实现了在Delphi XE7的安卓程序中调用JA

带你玩转Visual Studio——命令行编译C/C++程序

VS构建工具介绍 我们都知道C/C++源代码要生成可执行的.exe程序,需要经过编译.链接的过程.你在VS工具中只需要选择菜单Build或按一下F5可以编译.链接.运行了,其实IDE帮我隐藏了好多的具体细节. 我先假设VS2010安装在以下目录中: C:\Program Files (x86)\Microsoft Visual Studio 10.0 打开安装目录下的VSDIR\VC\bin可以看到一系列的可执行程序.exe和批处理文件,这些就是VS2010构建.编译.链接时要用到的工具.看一下

Delphi编译/链接过程

下面展示了Delphi是怎样编译源文件,并且把它们链接起来,最终形成可执行文件. 当Delphi编译项目(Project)时,将编译项目源文件.窗体单元和其他相关单元,在这个过程中将会发生好几件事情: 首先,Object Pascal编译器把项目单元编译为二进制对象文件,然后资源编辑器将把诸如程序图标.窗体文件等资源编译成二进制资源文件,接着链接开始起作用:链接器根据编译器产生的二进制文件,依项目需要增加一些库文件,并把这些文件综合在一起产生最终的可执行文件. 编译.创建和链接 每当点击Run按

Android上通过gcc编译普通的C程序

1.编译可执行程序 1.1 通过mk脚本编译 目录结构: mk_app jni main.c Android.mk Android.mk内容十分满简单: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= main_exec LOCAL_SRC_FILES := main.c include $(BUILD_EXECUTABLE) 命令下,cd到jni的上一级目录,然后执行ndk-build命令: E:\GitHub

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage