首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nim教程【十五】【完结】

true proc log(msg: string) {.inline.} =   if debug: stdout.writeln(msg) var   x = 4 log("x has the value... & fn) withFile(txt, "ttempl3.txt", fmWrite):   txt.writeln("line 1")   txt.writeln("line 2") 在这个例子中,...两个writeln语句绑定到的是body参数 这段代码可以帮助开发人员避免“忘记关闭文件”的错误 宏 Nim语言的宏提供了一个高级的编译期的替换功能 Nim语言的宏不能替换语言本身的语法, 但这并不是什么缺憾...如果外部接口在编译期不可用,那么你就必须用纯Nim语言写宏 (这估计就是在说Nim和C混合编程的时候要注意的事情) 你可以使用Nim代码编写任何形式的宏,编译器会在编译期把他们翻译成真正的Nim代码。...可以有两种办法写一个宏 用Nim代码编写宏,让编译器解析它 手动创建抽象语法树AST,你告诉编译器 如果你想建立抽象语法树AST,那么你一定要知道Nim语言的语法是怎么转换为抽象语法树的 在N关于宏的帮助说明文档

96680

Sednit组织最新研发的恶意软件组件

wordData.dotm文件中还包含恶意宏,文档被打开后恶意宏也将被执行,不过具体将取决于目标设备中Microsoft Word的版本,有的版本默认会禁用VBA宏功能,如果被禁用的话,恶意软件还会提示用户启用宏功能...除此之外,恶意文档中还包含一个嵌入的ZIP压缩文件(恶意宏在执行之后会对其进行解压提取操作)。...如第一张截图所示,wordData.dotm中的宏会打开另一个文档:lmss.doc,而lmss.doc文件需要恶意宏从wordData.dotm中提取出来。...lmss.doc中的恶意宏辉执行lmss.exe,也就是Zebrocy最新的Nim下载器,它同样是从wordData.dotm中提取出来的,而且wordData.dotm并不会直接执行下载器。...需要注意的是,lmss.doc中包含的VBA代码可以执行新型的Nim下载器,而且它还嵌入了一个Base64编码的可执行程序,根据其文档属性,lmss.doc创建于2019年1月份,并且在8月20日进行过修改

77730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Windows平台安装nim

    nim官方介绍 Nim是一种静态类型的编译系统编程语言。它结合了来自成熟语言(如Python,Ada和Modula)的成功概念。...支持各种后端:它可以编译为C,C ++或JavaScript,因此Nim可用于所有后端和前端需求。 富有表现力的 Nim是独立的:编译器和标准库是在Nim中实现的。...Nim具有强大的宏系统,可以直接操纵AST,提供几乎无限的机会。 优雅 宏无法更改Nim的语法,因为不需要它-语法足够灵活。 具有本地类型推断,元组,泛型和和类型的现代类型系统。...nim 跟rust 一样,都属于小众语言。 它的语法集python、lisp(主要是宏)、Ada之长于一身(可能对于习惯了C系语法的人来说有点不适应)。...如果 你想使用nim编写包含Windows API内容,还需要下载和安装Winim[7]。

    4K10

    【神兵利器】Windows平台shellcode免杀加载器

    项目介绍 免杀,bypassav,免杀框架,nim,shellcode,使用nim编写的shellcode加载器,可快速生成免杀可执行文件 项目特点 1:自带四种加载方式 2:可自行拓展加载方式 3:支持两种加密技术...,分别位3des加密和凯撒密码,密钥随机,每次生成文件拥有不同hash 4:图标可以自定义 文件组成 bin 中存放生成的可执行文件 encryption 存放加密代码文件 工具使用 1、打开生成器 2...、将payload拖动到该窗口 3、选择加载方式,点击生成,可执行文件会保存到bin文件夹中 相关扩展 1、新建nim代码文件,引用public,获取code(解密的明文shellcode)和codelen...(明文shellcode长度) 2、以Direct Load为例,将c++的功能代码放到上图中方框内即可 3、修改Compiler.ini文件,添加一行,key为加载方式,value为编译使用的命令行,

    9800

    leepcode作业解析-5-21

    25、Nim游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。...编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。...= 0: return False 28、两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。...解答:利用字典能存储key的value值,我们可以标记,字符串出现的第一次标记为1,如果出现第二次则+1,这样,第一个value等于1的key就是第一个不重复的字符。...j对应的字符在字典s1中,并且该字符对应的value值为1,则第一个不重复的字符就是该字符;如果不是则继续循环。

    29220

    Nim编码风格

    介绍 Nim语言不限制开发人员使用哪种具体的编码风格, 但为了社区的发展,在编写一些标准库的时候还是应该遵从统一的编码风格 这篇文章会列出一系列的编码风格准则,供大家参考。...但值得注意的是,有很多例外场景会与这些准则相悖, 而且,nim语言非常灵活,在一些特定上下文中,这些编码风格准则也不适用。...在编写nim的基础类库、编译器、官方工具的时候, 强制要求遵从这些编码风格准则 间距和空白约定 一行的代码量不应该超过80个字符,一行代码量太多的话不利于阅读; 应该使用两个空格来制定缩进,不能使用...应该使用PascalCase(两个单词中每个单词首字母都大写)命名法命名类型标识符 另外,除了一些常量可能会使用PascalCase命名法之外, 其他的标识符都应该使用camelCase(两个单词中,第一个单词的首字母小写...语言的每个方法中都有一个隐藏的result变量) 一般情况下推荐返回一个[]或者""或者抛出一个异常,而不是返回一个nil 大部分时候用proc(方法)就能满足业务需求了 只有在比较特殊的时候才会用到宏、

    1K80

    安卓软件开发,JetpakComposeM3用Gemini API创建demo的技术实现和源码

    我会抽时间编写有价值的技术文章,感谢大家的理解与支持!...Package Name: 包名,保持唯一性,可以选择如 com.nim.nimgeminidemo。Save Location: 项目保存路径,可以是本地的任意文件夹。...点击页面上的"Generate API key with Google AI Studio",进入Google AI Studio获取API Key并填入框中。...在项目配置文件 gradle.properties 中,你可以将API Key保存为环境变量,这样不仅可以提高安全性,还能避免在代码中直接暴露Key:API_KEY="你的API密钥"在代码中,通过读取环境变量的方式获取...首先是 API Key 的管理。API Key硬编码在代码中是非常不安全的,容易被恶意用户获取并滥用。建议通过环境变量的方式管理API Key,或者使用更高级的密钥管理系统来保护它。

    20210

    AndroidApp和车机开发:RecyclerView实现触摸和拖放的功能

    引言 在现代应用程序中,用户交互性是提供丰富用户体验的关键因素。RecyclerView作为Android中处理列表和网格布局的强大组件,支持多种交互,包括拖放排序。...本文指导您如何在RecyclerView中实现拖放功能,使用户能够通过长按和拖动来重新排序列表项,用Kotlin实现 长按和拖放操作 为了为RecyclerView添加长按拖放功能,我们将通过自定义ItemTouchHelper.Callback...getMovementFlags:在此方法中,我们将定义列表项可拖动的方向。...实现步骤 第一步:编写XML布局文件 首先,为列表项编写XML布局文件,如 item_type_one.xml: //item_type_one.xml,依此类推... nim.recyclerviewtechdemo.R import java.util.Collections /** * @author Nimyears */ class

    28920

    还在用gtest?更好用的测试框架介绍

    它提供了编译语言(如 D/Rust/Nim)的能力,并通过提供一个快速,透明和灵活的测试运行器与简洁的界面,可直接在生产代码中编写测试。...self-registering test that compiles to an executable looks like this: 相关特性 通过定义DOCTEST_CONFIG_DISABLE标识符可以从二进制执行文件中删除与测试相关的所有内容...可以在程序中设置选项,而不是通过argc/ argv从命令行传入。 自己被禁用时不会产生警告。...doctest提供了很多丰富的宏,完全可以满足我们的测试需要。...doctest的断言宏 CHECK宏是只检查并不会终止测试,REQUIRE宏则会终止测试和gtest里面的ASSET_XX宏类似,这两个宏也是平时做单测时用得最多的两个宏了。

    1.6K10

    NVIDIA NIM新技能:教你如何读懂财报,精准捕捉投资机会

    与大型语言模型 (LLM) 在金融 NLP 任务中的能力相比,使用传统的自然语言处理 (NLP) 方法(如词袋、情感词典和单词统计)在这些任务上实现的性能通常不足。...具有 NIM 的自托管模型支持保护客户和企业数据,这是 RAG 应用程序中的常见要求。 第 3 步:在 NVIDIA API 目录上进行设置 可以使用 NVIDIA API 目录访问 NIM。...出于本文的目的,我们将它存储在一个环境变量中: export NVIDIA_API_KEY=YOUR_KEY LangChain提供了一个方便的NGC集成包。...Every key and value in the JSON should be a string. """ llm = ChatNVIDIA(model="ai-llama3-70b",...通过利用 NIM 等先进的 AI 技术,现在可以快速准确地从财报电话会议记录中检索信息。

    17010

    安卓软件开发:Jetpack Compose 和 Material 3 实现高级登录页面(Kotlin)

    二、项目开发 2.1 添加项目依赖项 在项目的 build.gradle 文件中添加 Compose 和 Material 3 的依赖项: dependencies { implementation...{ Text("Next") } } } } 2.4 review 知识点介绍 它可以让你在Android Studio中实时看到你编写的...• 解决方案:在 onValueChange 中处理输入验证,通过动态更新错误提示提升用户体验。利用 Text 和 Color 的组合,要多思考怎么设计直观的错误提示样式。...3.3 声明式导航与组件解耦 • 难点:在 Compose 中,声明式导航和传统的 Fragment 和 Activity 导航有很大区别,特别是在状态的保留和恢复。...四、学习笔记 我加深了对 Jetpack Compose 的理解,还掌握了如何在实际项目中灵活使用状态管理和组件解耦。

    782183

    安卓软件开发:手把教Jetpack Compose实现对接接口服务层的开发

    = null )} 2.3.3 编写UI用Jetpack Compose 显示从 API 获取的分类列表。...error = null ) Box(modifier = Modifier.fillMaxSize()) { Text( text = "@Nim...3.2 网络请求的异常处理如果从远程 API 获取数据时,可能会遇到各种异常(如网络连接失败等)。...4.3 假数据和状态模拟 • 假数据:在预览过程中,无法依赖真实的网络请求。所以,手动编写了假数据(如 fakeCategories) @Preview 函数调用,为了在 AS 中进行 UI 预览。...五、总结这次Demo 用 Jetpack Compose 开发App,编写代码实现了从 API 进行数据交互,还编写了如何假设数据UI的正确显示。有任何问题欢迎提问,感谢大家阅读 )

    448102

    专家专栏|Zabbix5.2安全特性-机密信息外部存储

    一、特性介绍 Zabbix 5.2 在安全性能做了很大的改进,如支持连接加密,保密宏等。现在zabbix的所有连接都可以配置为加密模式。...如宏信息,数据库连接信息,密码,加密的key等。这进一步加强了Zabbix的安全性,对于一些场景特别适用。...输入三次以下命令,输入后会提示要输入key,挑选之前5个key中的三个,输入,即可解封。...六、Vault存储宏 新版本可将zabbix 宏存储在Vault中,之前已在Vault创建一个名为macros的path,后期可使用以下命令创建需要的macros,直接写在后面即可,如添加一个key为token...七、Vault宏使用 下面介绍如何在zabbix中如何使用vault保存的宏。例如使用ssh agent采集时需要输入机器的账号和密码,这里可使用vault存储账号和密码信息。下面主要介绍此场景。

    2.2K20

    提升进程权限-OpenProcessToken等函数的用法

    在Winnt.h中还定义了一些权限名称的宏,如: #define SE_BACKUP_NAME TEXT(“SeBackupPrivilege”) #define SE_RESTORE_NAME...(IDR_MAINFRAME); m_nid.hIcon =hIcon;//图标句柄 // PNOTIFYICONDATA m_pnid=&m_nid; ::Shell_NotifyIcon (NIM_ADD...,为了便于在代码中引用这些字符串,微软在winnt.h中定义了一组宏,如 #define SE_DEBUG_NAME TEXT(“SeDebugPrivilege”)。...下面是一个实际的例子,用来将执行promoteProcessPrivilege的当前进程的指定特权打开,函数参数为指定的特权名,可以传递其宏定义,也可以是完整的字符串表示: BOOL promoteProcessPrivileges...hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap == INVALID_HANDLE_VALUE

    1.6K10

    nim语言木马开发初探

    二、nim介绍与安装 Nim 是一种静态类型的、编译型、系统编程语言。它结合了其他成熟语言的成功概念(如 Python、Ada 和 Modula)。...(参考:https://nim-lang-cn.org/) 具体安装步骤阅读说明中的参考文章 三、正式免杀 1、socket马 通过socket进行通信传输command,代码如下: import net...2、NimShellCodeLoader 参考文章 aeverj/NimShellCodeLoader: 使用nim编写的shellcode加载器 (github.com) nim-lang:...而是将其保持在另外的文件中,在上传木马的时候同时上传shellcode文件,只在写入内存的情况下再进行读取。...或是将其放在远程网络服务器中,在写入内存前在发送请求解析获取shellcode写入内存。该种方法也可以在一定情况下过杀软,但是还是属于静态免杀的一种。

    78020
    领券