跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

使用Appveyor构建VS项目-快速编译

精选回复

发布于

使用Appveyor构建VS项目-快速编译

2023年7月23日马云惹不起马云

倾斜

前言

在工作中,经常看到一些制作精良的C++开源项目,但作者并没有写CI/CD来构建项目并发布Release版本的二进制文件,所以需要自己手动编译,但有时是临时环境,需要安装Visual。用Studio等IDE构建比较麻烦,所以appveyor可以支持各种语言的构建环境。只需要在网页上发布二进制程序即可,解决了本地安装开发环境的痛点。

Appveyor 简介

AppVeyor 是一家成立于2011 年的加拿大私营公司。我们为Windows 开发人员提供持续集成工具。该服务对于开源项目是免费的,我们为私人项目和客户站点的AppVeyor 企业安装提供订阅服务。

迄今为止,已有超过50,000 名开发人员使用AppVeyor,并且已经运行了超过1000 万次构建。 AppVeyor 受到Microsoft、Google、Facebook、Mozilla、Slack、GitHub 等公司的信任。

关于|应用程序载体

构建 Github 项目

AppVeyor 提供其独特的配置文件来声明构建操作。开发者可以通过编写AppVeyor配置文件来控制程序的发布过程。

这里仅讨论没有AppVeyor 配置文件的项目。以https://github.com/goldshtn/etrace 为例。 etrace 是一个命令行工具,用于实时跟踪ETW 事件并处理现有的.etl 记录文件。它的灵感来自于Microsoft ELT 工具。

axfwxbhodan2887.png

该项目没有AppVeyor 配置文件。首先,将项目Fork到你自己的账户上,然后访问https://www.appveyor.com/,使用你的Github账户登录,并授权读取此仓库。

1

在Github一栏可以看到授权仓库。点击+ADD进入项目的构建配置界面:

2

由于本项目是用C#开发的,所以我们重点关注C#相关配置:

3

在Before build脚本中输入以下命令,在开始编译之前下载该项目所依赖的库:

努吉特恢复

“nuget Restore”是NuGet 命令行工具中的命令。它用于恢复项目依赖的所有NuGet包。在开发.NET应用程序时,经常使用NuGet来管理项目所依赖的第三方库和组件。 NuGet 是.NET 生态系统中最受欢迎的包管理器之一,它提供了一个中央存储库,开发人员可以从中获取各种包和库。

“nuget Restore”命令读取项目文件(.csproj 或.vbproj)中的依赖项,并下载或恢复所需的NuGet 包,以确保项目可以成功编译和构建。该命令经常在CI/CD(持续集成/持续交付)过程中使用,以确保在构建项目之前正确恢复并安装所有依赖项。

另外,还可以在环境配置中设置安装开发库的命令:

4

最后一步是设置用于打包的二进制文件。单击artifacts,配置打包路径。它必须是相对路径。 C#程序一般生成二进制文件到bin目录下,所以这里写:etrace\bin

5

保存后,返回项目页面,点击Start New Build开始构建:

6

等待一段时间就可以看到构建好的程序,直接下载使用即可。

7

使用 AppVeyor 构建 Mimikatz

Mimikatz是gentilkiwi使用C语言开发的Windows安全工具。该工具功能丰富,可以从内存中提取明文密码、哈希值、PIN码和kerberos票据、哈希传输等。随着越来越多的黑客滥用这个工具来进行一些非法活动,因此gentilkiwi每次发布Release时,Release中的Mimikatz样本都会被标记为黑客工具,这给红队带来了一些小麻烦。通过AppVeyor,我们可以自动做一些静态特征处理,然后自动构建和生成新的工具。

gentilkiwi 在Mimikatz 项目中内置了一个AppVeyor 配置文件。当项目更改时,此配置文件将自动触发AppVeyor 构建过程。

8

我们要做的就是先Fork一份Mimikatz到我们自己的项目中,然后开始修改AppVeyor配置文件:

9

这里我只做了一项工作,就是将代码中的所有Mimikatz字符串替换为aabbcc。当然,我还可以做很多其他的替换操作。

ls;

复制项目C:\projects\mimikatz\mimikatz\mimikatz.ico C:\projects\mimikatz\mimikatz\aabbcc.ico;

(Get-ChildItem -Path '.' -Recurse -File -Ininclude *.h、*.c、*.vcxproj、*.rc) | ForEach-对象{

$newFileName=$_.Name - 替换'mimikatz\.(h|c|rc)', 'aabbcc.`$1'

$newPath=Join-Path -Path $_.Directory.FullName -ChildPath $newFileName

(获取内容$_.FullName) | ForEach-对象{

$_ -替换'mimikatz', 'aabbcc'

} |设置内容$newPath

if ($newFileName -ne $_.Name) {

删除项目$_.FullName

}

写入主机$newPath

};

ls 米米卡兹;

替换图标的操作可以改为从网上下载某个地址的图标,这里不再赘述。

我的配置文件地址:mimikatz/appveyor.yml at master马云惹不起马云Rvn0xsy/mimikatz (github.com)

编译完成的成品如下:

10

11

🥪摘要

在线CI/CD 工具可以节省设置环境的时间。由于CI/CD 是事件触发的,因此每次更改都可以生成新样本,并且可以无限次使用。如果有些工具非常敏感,静态特性很多,你可以像我一样写一个类似的批处理,添加到CI/CD中,做一些简单的对抗处理。本文只是一个起点。我相信还有更省时间、更有效的方法。

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。