时尚

当前位置:手机版美高梅网站 > 时尚 > Windows下通过命令行编写翻译C,小红伞杀毒软件自

Windows下通过命令行编写翻译C,小红伞杀毒软件自

来源:http://www.best-sclae.com 作者:手机版美高梅网站 时间:2019-10-05 00:37

这个东西本身没什么技术含量,启动新进程 跟命令行一样 几句代码的事 。说白了 还是要靠杀毒软件支持。比如你可以在服务器上做一个自动化的 程序模块  ,有用户上传文档 就进行病毒检测。现在的杀毒软件都可以自动做到这些的 ,指定目录下出现病毒文件会报的。杀毒软件还可以设定计划任务 ,指定何时扫描指定文件夹 ,可以设定检测到病毒后对文件的处理方式。其实这种需求本身是没什么太大必要的 ,坑爹啊 客户是上帝啊。既然有需求我们就要 给客户实现。

0x01:lpk.dll病毒

系统本身的lpk.dll文件位于C:WINDOWSsystem32和C:WINDOWSsystemdllcache目录下。lpk.dll病毒的典型特征是感染存在可执行文件的目录,并隐藏自身,删除后又再生成,当同目录中的exe文件运行时,lpk.dll就会被Windows动态链接,从而激活病毒,进而导致不能彻底清除。

参考
第一次用Markdown编辑器写博客,以前都是用Html编辑器写的。这次尝试一下Markdown,感觉效果不错,格式化代码的方式也很简洁。

好 不说了开始干活了。先从网上下载个免费版的小红伞 ,安装好。我的是这个版本的:
图片 1

0x02:lpk.dll功能

提权

利用lpk TOOls工具生成lpk.dll,将lpk.dll上传到目标服务器带有exe的目录下,当exe被执行后,就会动态链接lpk.dll,映像劫持技术。

shift后门(连续按5次shift,然后按设定好的案件,就会出现界面,输入密码就可以使用)

      由于在Linux上可以使用命令行,通过gcc命令编译C/C++程序。因此就想是否在windows上也可以通过命令行来编译C/C++程序。
      网上有说,在windows下安装一个cygwin,然后就可以用gcc命令编译了,可是这样太麻烦了。然后我想VC6.0和Vistual Studio不是也可以编译C/C++文件的吗?虽然它们是图形化界面的方式,可是背后也一定是用命令行方式编译的。

转到我的安装目录 C:Program Files (x86)AviraAntiVir Desktop  看到这个了噻: avscan.exe  ,我们就调用它。通过命令调用avscan需要一个配置文件 ,我们在d盘新建一个文本文件 更名为myavp.avp  内容为:

当前环境 Win10 x64 & Vistual Studio 2015

[CFG]
GuiMode=1
ExitMode=1
[SEARCH]
Parameter=0x00300432
[CONTROLCENTER]
ProfileName=myscan

      首先,在桌面(我的目录是C:UsersAdministratorDesktoptest.cpp)上新建一个文本文件,改名为test.cpp。test.cpp的内容如下:

然后把文件属性设为只读 ,要不然 调用后 小红伞会删除此配置文件。别问我什么意思 ,我也不知道什么意思 ,小红伞安装目录也有很多的avp文件 。不过可以确定一点 guimode=1 意思是控制是否弹出界面 ,哇哈哈    ,别砸我。为了测试成功与否我们得找个病毒文件,擦 我哪去找病毒文件啊 ,最终我还是找了个 ,当前比较流行 时尚的lpk.dll 。如假包换这绝对是一个病毒文件 我朋友传给我的压缩包里的。然后再随便找个图片文件  th.jpg  其他随便什么exe文件  随便都可以 随意。
图片 2

#include <iostream>
using namespace std;
int main()
{
    cout<<"hello world!"<<endl;
    return 0;
}

然后 运行命令行如下:

我机子上安装的VS2015,vs2015的VC的bin目录下有个cl.exe就是负责编译C/C++程序的,位置如下:

D:>cd C:Program Files (x86)AviraAntiVir Desktop
C:Program Files (x86)AviraAntiVir Desktop>avscan /CFG="d:myavp.avp" /PATH="d:th.jpg"

C:Program Files (x86)Microsoft Visual Studio 14.0VCbin

这只是个普通图片文件 事实检测此妹纸是无毒的:
图片 3

VC的include目录如下:

然后运行命令 参数设定为扫描有病毒的文件:
C:Program Files (x86)AviraAntiVir Desktop>avscan /CFG="d:myavp.avp" /PATH="d:lpk.dll"
结果:
图片 4

C:Program Files (x86)Microsoft Visual Studio 14.0VCinclude

注意在win7下 有可能会出现提示“要允许以下程序对计算机进行更新吗” 这个请自行设置 管理员权限。

VC的lib目录如下:

我们想要的是不让他弹出界面,把上面的 配置 第一个项改成GuiMode=0  ,然后再运行命令行 ,结果是 界面是没了 但是命令行里 却什么结果也不返回 。运行命令 然后就完了 空空如也  这个我也不知道怎么回事 先不管。 新建一个winform程序 写一段如下c#函数:

C:Program Files (x86)Microsoft Visual Studio 14.0VClib
 1 void invokeAntivirus(string executeFileFullName,string args,string docFullName)
 2 {
 3     Process proc =null;
 4     proc = new System.Diagnostics.Process();
 5     proc.StartInfo.FileName = executeFileFullName;
 6     proc.StartInfo.Arguments = string.Format(args, docFullName);
 7     proc.Start();
 8     proc.WaitForExit(); //等待
 9 
10     if (proc.ExitCode == 0)
11         MessageBox.Show("没病毒啦啦啦");
12     else
13         MessageBox.Show("注意,有情况");
14 }

直接在CMD下键入以下命令

然后在按钮的click事件里调用:

set path=C:Program Files (x86)Microsoft Visual Studio 14.0VCbin
set include=C:Program Files (x86)Microsoft Visual Studio 14.0VCinclude
set lib=C:Program Files (x86)Microsoft Visual Studio 14.0VClib
1 string exe = @"C:Program Files (x86)AviraAntiVir Desktopavscan.exe";
2 string args = "/CFG="d:\myavp.avp" /PATH="{0}"";
3 string docFile = textBox1.Text;
4 invokeAntivirus(exe, args, docFile);

      这些设置仅在该CMD环境下有效,它并不会永久改变系统环境变量,只是临时改变而已。所以并不用太担心。

最后运行下我们编译后在debug目录的程序 ,一定要鼠标右键 以管理员方式运行。
在文本框填写d:th.jpg

通过set命令可以查看当前配置的环境变量,如下:
图片 5

图片 6

进入test.cpp的目录,并运行 “cl test.cpp” 命令,报错:fatal error C: 无法打开包括文件: “corecrt.h”: No such file or directory
图片 7

在文本框填写:d:lpk.dll

参考这篇博客
进入C:Program Files (x86)Windows Kits10Include目录
图片 8

图片 9

我这里是找到其中最新版的点进去,进入到C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrt目录,corecrt.h文件如下:
图片 10

当你点击按钮后界面会死几秒钟 才有反应 ,因为要等扫描进程结束。如果你想解决此情况不让界面死掉 那么最简单的方式 放到另一个线程里执行就可以了。proc.ExitCode != 0 的那些代码是什么意思其实我也不明白 ,反正等于0的是正常文件 。反正功能实现了就行了 坑啊。注意需扫描的文件名或者路径填错了 并不报错 而是proc.ExitCode==0 。并且扫描结束后发现d盘的病毒文件已经不见了。再看小红伞的界面 原来已经被自动隔离了:

修改环境变量,添加ucrt目录

图片 11

set include=C:Program Files (x86)Microsoft Visual Studio 14.0VCinclude;C:Program Files (x86)Windows Kits10Include10.0.10586.0ucrt

再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件“uuid.lib”
图片 12

参考这篇博客,进入到C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib目录,果然发现Uuid.Lib
图片 13

修改环境变量,添加该目录

set lib=C:Program Files (x86)Microsoft Visual Studio 14.0VClib;C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib

再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件 “libucrt.lib”
图片 14

进入C:Program Files (x86)Windows Kits10Lib目录
图片 15
找最新版的文件夹,进入C:Program Files (x86)Windows Kits10Lib10.0.10586.0ucrtx64目录,发现“libucrt.lib”文件
图片 16
这里说明一下,有d后缀的lib文件是Debug版本的,没有的是Release版本的,最明显的区别就是Release版的删除了Debug版本中诸如断点等调试信息,并且进行了代码优化,因此通常Release版本的都会比Debug版本的文件小。

修改环境变量,添加该目录

set lib=C:Program Files (x86)Microsoft Visual Studio 14.0VClib;C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib;C:Program Files (x86)Windows Kits10Lib10.0.10586.0ucrtx64

再次执行 “cl test.cpp” 命令,依然报错:libucrt.lib(exp21.obj) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突
图片 17
但是扯淡的是为这里就是64位的Win10啊,当初是64位的Win7,用腾讯Win10装机助手升上去的。
图片 18

修改环境变量,改为x86

set lib=C:Program Files (x86)Microsoft Visual Studio 14.0VClib;C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib;C:Program Files (x86)Windows Kits10Lib10.0.10586.0ucrtx86

执行成功,/out:test.exe test.obj
图片 19
在输出目录下就生成了相应的 .obj 和 .exe 文件了。
图片 20
执行test.exe,可以在CMD中看到相应的输出
图片 21

经过这一次的反复百度,我得出一个经验:网上的博文大多都是Out,而且大家都是复制粘贴还写自己原创,所以一堆一样的资料,而且是不能运行的。所以以后看到网上的资料,一定要亲自试一下,并标注当时的环境才可信。

本文由手机版美高梅网站发布于时尚,转载请注明出处:Windows下通过命令行编写翻译C,小红伞杀毒软件自

关键词: