04 2021 档案

搭建infer扫描C系列代码的环境
摘要:搭建infer扫描C系列代码的环境 需求 使用infer扫描C系列的代码 环境要求: clang编译器:扫描C系列代码使用的编译器,因为infer内部采用的是clang所以不能使用gcc代替 infer扫描器 cmake: 源码安装clang需要使用 安装cmake 下载 https://cmake 阅读全文
posted @ 2021-04-28 15:05 Sna1lGo 阅读(569) 评论(0) 推荐(0)
脱壳与加壳-加壳-7-修复重定位表
摘要:脱壳与加壳-加壳-7-修复重定位表 前面采用的方案是:给被加壳的程序添加一个新的区段,然后使用link命令把壳代码的数据段和代码段全部合并在一起合并到.text段里面,然后把壳.dll文件加载到程序的内存,然后把壳的代码段copy到被加壳的程序的壳代码段里面,然后读取壳.dll文件中的.reloc重 阅读全文
posted @ 2021-04-26 00:55 Sna1lGo 阅读(979) 评论(0) 推荐(0)
脱壳与加壳-加壳-6-代码实现加密导入表
摘要:脱壳与加壳-加壳-6-代码实现加密导入表 BOOL CPeUtil::GetImportTable(){ DWORD TableLen = 0; //1得到导入表地址 PIMAGE_IMPORT_DESCRIPTOR pImportTable = (PIMAGE_IMPORT_DESCRIPTOR) 阅读全文
posted @ 2021-04-25 22:37 Sna1lGo 阅读(306) 评论(0) 推荐(0)
脱壳与加壳-加壳-5-加密导入表
摘要:脱壳与加壳-加壳-5-加密导入表 导入表知识可以:https://www.cnblogs.com/Sna1lGo/p/14461530.html 步骤 1 找到导入表 2 提取导入表的数据结构,自己用自己的数据结构来存储,把原本的导入表的数据结构加密,不让操作系统来处理 3 把存储的操作系统的数据结 阅读全文
posted @ 2021-04-25 21:21 Sna1lGo 阅读(408) 评论(0) 推荐(0)
脱壳与加壳-加壳-4-修复dll文件的重定位表
摘要:脱壳与加壳-加壳-4-修复dll文件的重定位表 1 先将一个dll文件load到内存,然后找到dll文件的第一个区段也就是我们的代码段加数据段也就是壳代码 2 然后将这个dll的第一个区段复制到加壳程序的最后一个区段 3 由于ImageBase发生变化 需要修复重定位表,要修复重定位表就得获取重定位 阅读全文
posted @ 2021-04-12 00:54 Sna1lGo 阅读(744) 评论(0) 推荐(0)
Clang Static Analyzer-使用手册-各种分析和代表程序
摘要:Clang Static Analyzer-使用手册-各种分析和代表程序 当你在写一个Checker的时候通常你需要先决定你是否需要path-sensitivity来处理,或者就用语法检测来处理 path-sensitivity比语法检测慢得多得多,但是之所以慢不是因为添加了Checker的原因,而 阅读全文
posted @ 2021-04-11 18:09 Sna1lGo 阅读(1613) 评论(0) 推荐(0)
脱壳与加壳-加壳-3-加壳代码实现
摘要:脱壳与加壳-加壳-3-加壳代码实现 壳代码如何存在 壳代码以什么形式存在?壳代码,就是一段指令,我们这里将其编写成为一个dll文件,把他的代码段,当成是壳代码 但是dll文件也是一个PE文件,也会有各自各样的区段,所以可以采用link指令,把所有区段合并成一个区段,然后把这个区段复制过去复制到前面开 阅读全文
posted @ 2021-04-11 01:36 Sna1lGo 阅读(675) 评论(0) 推荐(0)
脱壳与加壳-加壳-2-加密解密
摘要:脱壳与加壳-加壳-2-加密解密 加壳涉及的两大对象: 1、被加壳的程序 2、壳代码 1 处理被加壳的程序 1 添加区段 2 加密目标程序的区段 3 将壳代码写入新的区段 4 修改模板程序的入口点 上一章我们已经解决了添加区段 2 壳代码 2.1壳代码的功能: 2.1.1 解密功能 对加密的代码进行解 阅读全文
posted @ 2021-04-09 23:51 Sna1lGo 阅读(315) 评论(0) 推荐(0)
Clang Static Analyzer-使用手册-编写Checker代码实现
摘要:Clang Static Analyzer-使用手册-编写Checker代码实现 示例程序MainCallChecker.cpp #include"ClangSACheckers.h"#include"clang/StaticAnalyzer/Core/BugReporter/BugType.h"# 阅读全文
posted @ 2021-04-09 16:51 Sna1lGo 阅读(1182) 评论(0) 推荐(0)
Clang Static Analyzer-使用手册-编写Checker框架
摘要:Clang Static Analyzer-使用手册-编写Checker Checker是这个工具的灵魂 有了checker才可以检查你的代码 相当于就是CSA通过checker定义的检查方法去检查代码 添加Checker的办法 这里针对3.7.1的老版本,比较新的如llvm10以上的版本没法使用 阅读全文
posted @ 2021-04-08 17:33 Sna1lGo 阅读(641) 评论(0) 推荐(0)
脱壳与加壳-加壳-1-手工实现添加区段
摘要:脱壳与加壳-加壳-1-手工实现添加区段 给壳代码开辟空间来存放壳代码 方法1:在空白的区段头到区段的位置添加区段头 在区段的最后一个后面开辟新的区段 步骤 1 读取文件 2 创建buff存放PE文件镜像 3 解析PE(DOS头、NT头、可选PE头、标准PE头) 4 添加区段、修改相关PE某些字段值 阅读全文
posted @ 2021-04-07 22:42 Sna1lGo 阅读(441) 评论(0) 推荐(0)
Clang Static Analyzer使用手册-扫描漏洞的原理
摘要:Clang Static Analyzer使用手册-扫描漏洞的原理 当你用scan-build扫描代码后,查看对应的扫描结果会看到有很多对bug的形容,其实这些都是通过checker的处理,就相当于在checker中写好了怎么检查你的代码,然后如果出现了checker中的情况就会报错,就类似于你在v 阅读全文
posted @ 2021-04-07 18:04 Sna1lGo 阅读(268) 评论(0) 推荐(0)
Clang Static Analyzer使用手册-scan-build查看bug
摘要:Clang Static Analyzer使用手册-scan-build查看bug 在下载编译并把可执行文件添加到环境变量后 clang和scan-build以及scan-view都是可以直接通过命令使用的工具了 https://clang-analyzer.llvm.org/scan-build. 阅读全文
posted @ 2021-04-07 17:55 Sna1lGo 阅读(633) 评论(0) 推荐(0)
Clang Static Analyzer使用手册-Ubuntu安装
摘要:Clang Static Analyzer使用手册-Ubuntu 安装: 1 下载编译好了的二进制文件 https://releases.llvm.org/download.html 这种前面加了 Pre-Built Binaries的就是提前编译好了的二进制文件,就可以直接拿过来用 2 源码安装 阅读全文
posted @ 2021-04-07 17:25 Sna1lGo 阅读(800) 评论(0) 推荐(0)
加壳与脱壳-添加壳代码的几种方式
摘要:加壳与脱壳-添加壳代码的几种方式 上一次讲的方式是在区段头后面继续添加区段头,但是万一区段头的后面没有连续的空间怎么办 所以这里有好几种方式来处理 利用Dos Stub空间 PE文件里面有一段Dos Stub空间,没有什么用,所以可以利用起来作为加壳处理 可以通过把本来的 这一截(PE头+区段头)全 阅读全文
posted @ 2021-04-05 22:41 Sna1lGo 阅读(418) 评论(0) 推荐(0)
加壳与脱壳--将ShellCode写入PE
摘要:加壳与脱壳--将ShellCode写入PE PE文件代码段的空白区不足以存放我们的Shellcode的时候就需要添加新的区段来保存我们的shellcode 如何给PE文件添加新的区段 1 添加一个空白区段 2 添加一个区段头 3 修改numberofsections(区段数量) 4 修改ImageS 阅读全文
posted @ 2021-04-05 21:16 Sna1lGo 阅读(524) 评论(0) 推荐(0)
加壳与脱壳----壳的原理
摘要:加壳与脱壳 壳的原理 PE结构体 1 PE文件结构图 PE文件用硬盘到能运行起来经历的步骤 1 将pe文件copy到内存 2 按内存对齐值对齐 3 加载dll 4 修复 IAT、重定位表 程序允许 操作系统通过读取PE文件的addressOfEntryPoint(OEP)+PE文件的imagebas 阅读全文
posted @ 2021-04-05 18:47 Sna1lGo 阅读(941) 评论(0) 推荐(0)
软件漏洞-ShellCode加解密
摘要:软件漏洞-ShellCode加解密 ShellCode应该尽量避免大量的00,要解决这个问题需要对shellcode进行编码 shellcode的编码 shellcode的编码必须要可逆,不然怎么返回执行呢 所以直接用异或xor来处理 假设用 xor a,b来处理 a是我们的shellcode b是 阅读全文
posted @ 2021-04-05 00:19 Sna1lGo 阅读(539) 评论(0) 推荐(0)
软件漏洞-实现后门程序
摘要:软件漏洞-实现后门程序 创建一个socket绑定端口,等待用户连接,当用户连接后会创建一个进程,打开cmd.exe来实现互相连接,重定向cmd的输入输出流实现本地的cmd输入输出到别人的控制台电脑,然后就可以执行 这个程序写成shellcode然后就可以获取服务器端的控制台cmd命令行处理 阅读全文
posted @ 2021-04-04 20:50 Sna1lGo 阅读(191) 评论(0) 推荐(0)
软件漏洞-ShellCode瘦身
摘要:软件漏洞-ShellCode瘦身 瘦身前提 在很多攻击环境下,对于我们的Shellcode的大小是有严格限制的,我们实现一个MessageBoxA弹出 使用了很多字符串,导致ShellCode非常的大 LoadLibraryA GetProcAddress user32.dll MessageBox 阅读全文
posted @ 2021-04-04 20:17 Sna1lGo 阅读(168) 评论(0) 推荐(0)
软件漏洞-ShellCode调试
摘要:软件漏洞-ShellCode调试 如何调试shellcode 可以把shellcode放在一个数组里 然后直接通过内联汇编,把指令跳转到shellcode的地址就好了 可以用Jmp char shellcode[] = "\x60\x83";​​int main(){ __asm { lea eax 阅读全文
posted @ 2021-04-04 15:04 Sna1lGo 阅读(116) 评论(0) 推荐(0)
软件漏洞--优化ShellCode
摘要:软件漏洞--优化ShellCode 通过TEB和PEB就可以找到一些关键dll文件的基址,也就是可以拿到dll中的API,通过IAT来处理 步骤 1 保存相关字符串 user32.dll,LoadLibraryA,GetProcAddress、MessageBoxA,Sna1lGo 2 通过fs寄存 阅读全文
posted @ 2021-04-04 14:38 Sna1lGo 阅读(128) 评论(0) 推荐(0)