![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
安全开发
基于C++和python语言的安全工具开发和安全项目开发
摔不死的笨鸟
长期活跃更新,如果你觉得我的博客不错,那就订阅吧。这样我就能多买两本书看,给你写质量更高的博客。
展开
-
Makefile常见错误日志及解决方法
错误日志:/usr/bin/ld: cannot open output file build/config: No such file or directory。错误日志:fatal error: tcpd.h: No such file or directory.解决方案:安装libwrap0-dev(Debian 上的名称)解决方案:新建build目录。原创 2023-12-26 19:58:29 · 720 阅读 · 0 评论 -
Triage沙箱监控
Triage沙箱监控原创 2023-11-19 11:30:00 · 223 阅读 · 0 评论 -
x86-64默认数据类型大小
数据类型大小转载 2022-10-13 10:35:31 · 1161 阅读 · 0 评论 -
python实现模拟github账号登录
python实现github登录转载 2022-07-22 09:39:15 · 215 阅读 · 0 评论 -
vx-underground样本文件快速获取方法
python爬虫原创 2022-07-14 15:06:53 · 782 阅读 · 1 评论 -
Windows下找出占用文件的进程
枚举占用文件的进程转载 2022-07-07 16:45:00 · 436 阅读 · 0 评论 -
python按位取反的问题
python按位取反原创 2022-07-07 14:22:44 · 894 阅读 · 0 评论 -
正则表达式
安全运营原创 2022-06-14 11:43:03 · 157 阅读 · 0 评论 -
结束占用文件的进程
勒索软件在遍历文件加密时会用到下列代码,该代码功能主要防止文件被进程占用而无法被加密。#include <windows.h>#include <RestartManager.h>#include <stdio.h>int __cdecl wmain(int argc, WCHAR** argv){ DWORD dwSession = 0; WCHAR szSessionKey[CCH_RM_SESSION_KEY + 1]; DWORD dwError转载 2022-03-18 16:51:23 · 359 阅读 · 0 评论 -
MFC工作线程的创建与控件控制
为什么要用MFC?不是专业开发,只是做个工具。MFC的主界面是在界面线程运行的,如果在button的响应函数中写了一个用时很长的函数,那么就要考虑运用工作线程,否则MFC程序主界面就会卡住不动,直到函数运行完才会响应消息。开启工作线程的正确姿势那就是用MFC封装好的线程函数AfxBeginThread。CString strFolderPath = L"C:\\";CWinThread* pThread = NULL;pThread = AfxBeginThread((AFX_THREADP原创 2021-09-04 10:39:23 · 678 阅读 · 0 评论 -
c语言字符串处理函数
宽字符转char字符字符串从wchar_t转换成char#include <stdlib.h>errno_t wcstombs_s( size_t *pReturnValue, char *mbstr, size_t sizeInBytes, const wchar_t *wcstr, size_t count );字符串查找函数strstrchar* strstr(char*, const char*);字符串以字符分割strtok_schar* strtok_s(char*原创 2021-08-06 17:37:39 · 233 阅读 · 1 评论 -
Yara引擎编译和发布
我们自己设计软件时有很多情况都需要集成yara引擎项目-管理NuGet程序包,下载几个包并安装确保是git上最新代码即可编译package目录下的include和lib是自动添加到项目中的。发布时要注意除了yara编译需要依赖的jansson、libcrypto、libssl这几个库,把libyara编译好放一块。除了需要的jansson.h和jansson_config.h,openssl以外,包含yara.h和yara项目中用到的头文件。...原创 2021-08-05 17:36:01 · 1164 阅读 · 0 评论 -
马的设计要求
反混淆1.所有字符串和配置数据没有加密。 1分2.所有字符串和配置数据加密了但是静态反编译之后就是一坨坨。 2分3.所有字符串和配置数据加密了但是静态反编译之后很干净,和普通商业软件很像。 3分解密时机的选择.在执行后等待一段时间后解密或去混淆所有字符串数据或配置数据。PE净化务必从二进制文件的最终构建中去除所有调试符号信息、清单(MSVC 工件)、构建路径、开发人员用户名请勿留下与一般美国核心工作时间(即东部时间上午 8原创 2021-08-05 11:06:10 · 157 阅读 · 1 评论 -
C++ 根据PID获取进程路径
BOOLEAN KrnGetProcessPath(HANDLE hProcessId)// ProcessID handle can be get using PsGetCurrentProcessId(),// or by using process callback routines such as PsSetCreateProcessNotifyRoutine(){ HANDLE hProcess = NULL; OBJECT_ATTRIBUTES obj_attr; CLIENT_ID转载 2021-07-21 14:58:01 · 980 阅读 · 0 评论 -
C++ 遍历文件
#include <windows.h>#include <algorithm>#include <string>using namespace std;bool FileSearch(string sSearch, string sFolder){ // This recursive function will search for a filename or part of it, // inside the specified folder and转载 2021-07-21 14:56:14 · 447 阅读 · 0 评论 -
C++ RC4算法实现
CRC4.h/************************************************************ Standard RC4 Encryption* C++ Class* Coded by Viotto © BreakingSecurity.net***********************************************************/#include <string>using namespace std;c转载 2021-07-21 14:54:44 · 1046 阅读 · 0 评论 -
C++ 命名管道在进程之间传输数据
///// SERVER PROGRAM /////#include <iostream>#include <windows.h>using namespace std;int main(int argc, const char **argv){ wcout << "Creating an instance of a named pipe..." << endl; // Create a pipe to send data H转载 2021-07-21 14:49:49 · 322 阅读 · 0 评论 -
现有安全工具对进程加载dll模块的数字签名检测的问题
最近在做一个检验全进程dll签名情况的程序。发现了现有安全工具一些比较沙雕的行为。PChunter首先点名PChunter,查找没有数字签名模块,但是C:\Tools\Sanbox\SbieDll.dll我看了下明明具有数字签名,而且签名还正常,它是沙箱的一个正常dll。证据确凿,有什么好狡辩的。Procexp用微软自己出的procexp检查进程的模块签名情况时,发现一些db都往模块里搞。看了下文件的确只是个DB,根本不是PE格式。当然还有一些PNG格式也在模块列表中,服。伟大发明看我的工具原创 2021-07-14 17:53:17 · 800 阅读 · 0 评论 -
根据计划任务程序的操作动作来检测Donot组织攻击
一些木马和病毒程序常常使用计划任务程序来进行持久化,比如印度阿三写的Donot APT就非要用rundll32来注册自己的恶意dll。一怒之下我就写了C++代码专门针对藏在任务计划程序中的无文件攻击类型进行检测。如果主机被马感染了,可以迅速警报。#define _WIN32_DCOM#include <windows.h>#include <iostream>#include <stdio.h>#include <vector>#include原创 2021-06-22 14:37:36 · 217 阅读 · 0 评论 -
QMRootkit:不会编程的军人不是好的安全研究员
不懂逆向的开发人员不可能写出来对抗能力很强的软件,不会开发的逆向就像是没有手脚的大脑,没办法做出产品或者能推广成形的东西。逆向的学习最大提高点是去逆向自己编写的源代码程序。逆向和开发相辅相成,安全开发和逆向分析自动化的需求也很大。废话少说,本篇就介绍一个由本人开发的很沙雕的驱动Rootkit攻击模拟工具:QMRootkit驱动功能板块应用层使用MFC窗口界面开发,分为进线程操作、文件操作、网络操作和实际测试界面。测试的界面如下所示。实现了9种驱动层对抗功能。主要演示进程是calc.exe,通过D原创 2021-05-19 09:44:57 · 133 阅读 · 2 评论 -
检测工具介绍:Loki的IOCs检测和Pesieve的内存注入检测
LOKI控制行命令命令选项功能参数-h显示此帮助消息并退出-p要扫描的路径-s(千字节为单位) 以KB为单位的最大文件大小(默认为5000 KB)-l日志文件-r远程syslog系统-t远程系统日志端口-a警报级别的警报分数-w警告级别的警报分数-n通知级别的通知分数–printall打印所有扫描的文件–allreasons打印导致得分的所有原因–noprocscan跳过进程扫描–nofi原创 2021-01-07 14:47:16 · 680 阅读 · 1 评论 -
逆向自己写的键盘过滤驱动
闲来无事,逆向一下自己写的驱动,加深下认识。 这里把逆向的驱动分为Debug版,Release版和加载PDB版。三个版本的特点是: Debug版不会被编译器优化,比较适合学习逆向。 Release版是发布对外的,逆向时很多结构体和反汇编都被优化变形了,只能说是有原来代码的特征。 加载PDB版就几乎等同于阅读源码了,没什么挑战。 所以这里学习重点讲的是逆向Debug版编译的自己的驱动。Debug版 首先拖入IDA识别的DriverEntry并不是我们实际的DriverEntry原创 2020-10-22 16:03:13 · 327 阅读 · 0 评论 -
Virut感染型病毒查杀工具
职业病毒分析师的职责是为安全运营团队提供有力的后台支持,并能处置突发的大型感染病毒和勒索病毒。下面是自己写的Virut一款感染型病毒的修复工具。该工具没有遍历文件,只是修复了C盘下被病毒感染后的一个文件:hypertrm.exe.V。有兴趣的可以研究交流。// VirutRemoveTool.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#define BYTELENGTH 1024int Restor原创 2020-08-25 14:49:05 · 2648 阅读 · 0 评论 -
GandCrab4.0勒索病毒解密工具
GandCrab介绍GandCrab是由一个十分猖狂的团队研发的勒索软件病毒,2018年开始活跃,一年内勒索了将近20亿美元。2019年可谓臭名远扬的勒索软件之王:GandCrab背后的运营团队在俄语论坛中发表官方声明称,GandCrab勒索病毒将停止更新。为什么停止更新了呢?答案竟是,钱赚够了。然而这么猖狂的犯罪团伙,至今都没有被找到幕后团伙是谁。这就是GandCrab勒索软件的神奇传说。今天分享就分析个去年写的GandCrab v4.0工具。GandCrab勒索软件分析白名单目录:\Pr原创 2020-09-21 19:36:25 · 1312 阅读 · 1 评论 -
驱动级Rootkit攻击测试——进程隐藏
学习内核编程,祝早日能编写POC程序!SSDT HOOK NtOpenProcesstypedef NTSTATUS(*pfnNtOpenProcess)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, PCLIENT_ID); pfnNtOpenProcess OldNtOpenProcess;定义一个指向API的函数指针定义方法。作用是定义API函数指针备份原来的函数地址。typedef struct _SERVICE_DESCRIPTOR_T原创 2020-09-16 17:40:00 · 653 阅读 · 1 评论 -
Windows驱动开发与调试
配置目标:1.VS2017+windows10.0.16299+WDK驱动开发机(虚拟机)2.虚拟机WIN7 sp1驱动测试机3.win10实体机windbg调试WIN7sp1驱动测试机实际专业的驱动开发1和3是同一台实体机,也就是在实体机上编译和调试虚拟机内的驱动,如果驱动更加涉及底层,测试机也必须要用实体机,使用物理串口连接调试。这里选择分开的原因是驱动开发机要编译的是Rootkit驱动,可能会损害实体机。是为了更加安全的一种防护措施,第二是方便以后移植直接拷贝虚拟机镜像文件就可以开发了。驱原创 2020-09-04 10:32:53 · 1209 阅读 · 0 评论 -
实现IDApython自动化加载模块PDB
分析IDA加载PDB的过程分析正常的 File---->LoadFile-----PDBfile操作的实质:本文的目的就是去除手动操作,实现IDApython自动加载PDB的脚本程序。IDA加载PDB有两种方式:一、使用vc\msdia90.dll这个DIA的API接口函数(优先)二、使用Dbghelp.dll中的函数。(备用方式,老版本用)图中可以看到必须安装VC2008可再发行的x64安装包第一种方式才会成功。这里是用的是第二种PDB加载方式——dbghelp加载方式。而且过程中出原创 2020-07-24 16:49:07 · 1372 阅读 · 0 评论 -
C++编写遍历文件RSA与AES加解密程序时需要注意的问题
遍历文件的程序架构void EnumFile(LPCWSTR path, LPCWSTR filetail){ BOOL ret = FALSE; CHAR Filepath[MAX_PATH]{0}; WIN32_FIND_DATA FindFileData; wsprintf(enumpath, L"%s%s", path,L"\\*");//重中之重 HANDLE hFile = FindFirstFile(enumpath, &FindFileData); //标准LPCW原创 2020-07-10 09:49:20 · 923 阅读 · 0 评论 -
开发规范——开发代码上传工具Git使用详解
Git是在Github官网https://github.com/login使用github帐号创建一个远程代码仓库。经常被开发人员使用共同开发同一项目。引用知乎链接https://www.zhihu.com/question/38305012里的一张Git结构图。首先第一次使用Git,要用git clone 仓库地址,下载到本地(强烈建议单独放到一个文件夹中)。git clone 仓库地址有...原创 2020-04-26 14:39:01 · 233 阅读 · 0 评论 -
安装不再支持的python2.7开发环境
这里写自定义目录标题python2.7安装pip安装Pylintpython2.7安装pipPython 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。安装Pylintpylint主要用来检查代码的正确性和规范性,防止有明显的语法错误。 python.exe -m pip install -U "pylint<2.0.0" --user...原创 2020-07-01 15:06:39 · 4877 阅读 · 1 评论 -
IDApython多进程编程探索
**python的多线程因为GIL全局解释锁的存在,所以python多线程实质上效率和单线程差不多。要想真正在效率上得到提高,必须使用多进程。**多进程必须要用multiprocess类。本博全程教大家学会多进程编程。# -*- coding:utf-8 -*-from multiprocessing import Processimport timedef fun1(t): print 'this is fun1',time.ctime() time.sleep(t) p原创 2020-06-30 10:55:57 · 418 阅读 · 0 评论 -
开发规范——项目必用Python小函数
import datetimedef writelog(logpath,logstr): with open(logpath,'a') as file_handle: file_handle.write(logstr) starttime = datetime.datetime.now() logstr = "-------" + starttime + '\n' file_handle.write(logst原创 2020-06-17 15:30:50 · 171 阅读 · 0 评论 -
pyhton操作字典dict
str转16进制HEX数据有序读取文件内容到有序字典读取嵌套字典指定key的value值读取字典指定键值对str转16进制HEX数据def str2hex(s): odata = 0; su =s.upper() for c in su: tmp=ord(c) if tmp <= ord('9') : odata = odata << 4 odata += tmp - or.原创 2020-05-23 14:56:13 · 175 阅读 · 0 评论 -
加解密与编解码基础知识
BASE64编码26个大写英文字母26小写英文字母10数字”+””/”转换前 10101101,10111010,01110110转换后 00101011, 00011011 ,00101001 ,00110110十进制 43 27 41 54 对应码表中的值...原创 2019-09-06 20:22:08 · 2181 阅读 · 0 评论 -
THREADINFOCLASS结构体与FILE_INFORMATION_CLASS结构体
THREADINFOCLASS是一个枚举结构,其值旨在作为ZwQueryInformationThread和ZwSetInformationThread函数的输入。 查询或设置不同类型的信息选择不同的值。自从Windows NT 3.51的设备驱动程序工具包(DDK)起,THREADINFOCLASS枚举的C语言定义已在NTDDK.H标头中公开可用。 它支持ZwSetInformationThr...原创 2019-10-10 15:48:21 · 1917 阅读 · 0 评论 -
开发规范——C++类型转换救命速查
CString可以直接赋值字符串,没有必要加L变成Unicode。_tcscpy操作的是wchar_t类型,参数也是wchar_t类型,没有必要用这个。LPTSTR LPWSTR LPSTRWCHAR wchar_t wchar_tLPSTR cha...原创 2019-10-10 20:20:08 · 198 阅读 · 0 评论