[转]简单的PELoader

流沙 | C/C++ | 2018-01-24
一.废话 最近因为公司的项目需要,顺带的学习了一点和PELoader相关的东西,恰见网上正在沸沸扬扬的谈论虚拟脱壳。本人不才,实在是没能力也没精力去写一个真正意义上的虚拟机,因此尝试做了一个简单而偷懒的PE加载器。 这个PE加载器也可以看做是VM的前身吧。我想它可以成为一个简易脱壳工具或者用户态的进程内调试器基础。 二.做这个东西干嘛? 1.公司的项目需要实现但进程内多插件并发运行,也就是说,1个PID需要同时给n个进程使用,这牵扯到更麻烦的进程内内存切换工作。 2.实现反向进程注入,隐藏进程,这样做的RK更不容易被发现。 3.自从离开了安全的伤心地之后,一直堕落于做IM软件的Server,...

阅读全文>>

ė236次浏览 60条评论 0

[待写]项目流程

流沙 | C/C++ | 2018-01-24
ė212次浏览 60条评论 0

[转]注入小结

流沙 | C/C++ | 2018-01-24
一.Windows消息钩取:SetWindowsHookEx HHOOK SetWindowsHookEx( intidHook,// hook type 就是HOOK的消息种类,如WH_KEYBOARD,WH_MOUSE....见MSDN HOOKPROClpfn,// hook procedure 钩子过程,安装消息钩子时候,钩子过程一定要位于某个DLL内部 HINSTANCEhMod,// handle to application instance 钩子过程的DLL句柄(为NULL则是局部钩子) ...

阅读全文>>

ė236次浏览 60条评论 0

[实例]远程加载DLL, 远程卸载DLL

流沙 | C/C++ | 2018-01-22
0x01 项目说明 实现在内存中对dll的加载和卸载 0x02 软件展示 0x03 代码展示 // TestInjectProcess.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" #include <Windows.h> #include <Tlhelp32.h> #include <assert.h> #include &...

阅读全文>>

ė277次浏览 60条评论 0

DLL的远程注入技术

流沙 | C/C++ | 2018-01-21
一、DLL注入 DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。 这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载, 用户也就无法在资源管理器中删除这个DLL文件,真可谓一箭双雕哉。记得2003年QQ尾巴病毒肆虐的时候,就已经有些尾巴病毒的变种在使用这种技术了。 到了2004年初,我曾经尝试着仿真了一个QQ尾巴病毒,但独是跳过了DL...

阅读全文>>

ė232次浏览 60条评论 0

远程线程注入

流沙 | C/C++ | 2018-01-21
一、远程线程注入基本原理 远程线程注入——相信对Windows底层编程和系统安全熟悉的人并不陌生,其主要核心在于一个Windows API函数CreateRemoteThread,通过它可以在另外一个进程中注入一个线程并执行。在提供便利的同时,正是因为如此,使得系统内部出现了安全隐患。常用的注入手段有两种:一种是远程的dll的注入,另一种是远程代码的注入。后者相对起来更加隐蔽,也更难被杀软检测。本文具体实现这两种操作,在介绍相关API使用的同时,也会解决由此引发的一些问题。 顾名思义,远程线程注入就是在非本地进程中创建一个新的线程。相比而言,本地创建线程的方法很简单,系...

阅读全文>>

ė204次浏览 60条评论 0

基址查找测试

流沙 | C/C++ | 2018-01-18
简单测试基址 1 --- EAX=0000000B EBX=00097E68 ECX=00000000 EDX=0000000B ESI=00058338 EDI=005DF300 EBP=0160F768 ESP=0160F730 EIP=00425EBF Probable base pointer =00058338 00425EB2 - mov eax,00000FA0 00425EB7 - call Tutorial-i386.exe+E6F0 ---------00425EBC - mov [esi+18],eax 004...

阅读全文>>

ė236次浏览 60条评论 0

简单登录脚本测试

流沙 | C/C++ | 2018-01-17
0x001 易语言模拟了一个登录框 展示: 0x002 使用win32 模拟登录测试 全部代码: // 20180117_01.cpp : Defines the entry point for the application. //WTWindow #include "stdafx.h" #include <windows.h> BOOL isStart=FALSE; //登录 void QQLogin() { TCHAR szTitle[MAX_PATH...

阅读全文>>

ė240次浏览 60条评论 0

简单测试鼠标键盘事件

流沙 | C/C++ | 2018-01-16
类似案件按键精灵的东西,直接上代码 // 20180116_02.cpp : Defines the entry point for the application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> //FindWindow void test1() { TCHAR szTitle[MAX_PATH]={0}; HWND hwnd = FindWindow(TEXT("WTWindow"),TEXT("用户名 采集 V1.0...

阅读全文>>

ė253次浏览 60条评论 0

文件加壳实现(五) —— 已完成

流沙 | C/C++ | 2018-01-15
20180115.rar   0x001 写了一个多星期了 大多参考的时课程,以及红色病毒的代码 还有很多的知识点不太理解 模模糊糊的写出来了, 中间也遇到了很多困难,   字节贴关键代码吧 我把工程文件也附加上 // TestShell.cpp : Defines the entry point for the application. // #include "stdafx.h" #include <windows.h> #include ...

阅读全文>>

ė222次浏览 60条评论 0

文件加壳实现(四) —— VirtualAllocEx

流沙 | C/C++ | 2018-01-15
早上起来忙了两个小时, 主要参考的红色病毒的代码,一直在更改中 还有四步才能实现 帖一下半成品的代码 // TestShell.cpp : Defines the entry point for the application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #include "PEOperate.h" /* 以挂起的形式创建进程, 获取Conte...

阅读全文>>

ė267次浏览 60条评论 0

文件加壳实现(三) —— ZwUnmapViewOfSection

流沙 | C/C++ | 2018-01-14
还不完整, 继续整理中 // TestShell.cpp : Defines the entry point for the application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #include "PEOperate.h" /* 以挂起的形式创建进程, 获取Context */ #define KEY 0x56 #pragma pack(push...

阅读全文>>

ė262次浏览 60条评论 0

十种注入技巧 | 通用性进程注入技巧研究

流沙 | C/C++ | 2018-01-14
文章地址:https://zhuanlan.zhihu.com/p/28671064 进程注入是一种广泛应用于恶意软件和无文件攻击中的逃避技术,这需要在另一个进程的地址空间内运行自定义代码。进程注入提高了隐蔽性,一些技术也实现了持久性。 尽管有许多流程注入技术,在本博客中,我提供了十种在现实看到注入另一个进程运行恶意代码的技术。 我还提供了许多这些技术的屏幕截图,以便于逆向工程和恶意软件分析,协助针对这些常见技术进行检测和防御。 1. 经典的DLL注入方式:通过CREATEREMOTETHREAD和LOADLIBRARY进行注入 ...

阅读全文>>

ė239次浏览 60条评论 0

【转贴】直接运行内存中的程序

流沙 | C/C++ | 2018-01-14
 Windows的PE加载器在启动程序的时候,会将磁盘上的文件加载到内存,然后做很多操作,如函数导入表重定位,变量预处理之类的。这位仁兄等于是自己写了一个PE加载器。直接将内存中的程序启动。记得以前的“红色代码”病毒也有相同的特性。     直接启动内存中的程序相当于加了一个壳,可以把程序加密保存,运行时解密到内存,然后启动,不过对于增加破解难度还要稍微复杂点。否则人家把内存中的进程DUMP出来然后修复导入表就被拖出来了。 代码自己改吧 #include "stdafx.h" type...

阅读全文>>

ė204次浏览 60条评论 0

【转贴】直接载入内存中的DLL

流沙 | C/C++ | 2018-01-14
前言      你可能不希望在发布程序时附带上一个外部的 DLL,因为可能会有些用户在无意中把 DLL 删除了而造成 EXE 不能正确运行,也有可能该 DLL 会被别人拿去使用,也有可能,此 DLL 会成为破解者破解你的程序的突破口。无论出于何种原因,如果你想把一个 DLL 合并到一个 EXE 中的话,本文向你介绍这种方法。   Win32 ...

阅读全文>>

ė250次浏览 60条评论 0

齐天大圣,美图分享

流沙 | 随笔 | 2018-01-12
看视频截取的一张图, 分享下!!

阅读全文>>

ė217次浏览 60条评论 0

文件加壳实现(二) —— 读取数据并解密

流沙 | C/C++ | 2018-01-11
半成品,继续写 // TestShell.cpp : Defines the entry point for the application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #include "PEOperate.h" /* 以挂起的形式创建进程, 获取Context */ #define KEY 0x56 LPVOID GetLastSecData(LPSTR lpsz...

阅读全文>>

ė239次浏览 60条评论 0

文件加壳实现(一)—— 添加进文件并加密

流沙 | C/C++ | 2018-01-10
半成品,要下班了,记录下   0x1 调用函数 BOOL PackExeFile(HWND hwndDlg) { HWND hEditShell = GetDlgItem(hwndDlg,IDC_EDIT_SHELL); HWND hEditSrc = GetDlgItem(hwndDlg,IDC_EDIT_SRC); TCHAR shellPath[256]={0}; TCHAR srcPath[256]={0}; GetDlgItemText(hwndDlg,IDC_EDIT_SHELL,shellPath,256); ...

阅读全文>>

ė239次浏览 60条评论 0

异或文件加密测试

流沙 | C/C++ | 2018-01-10
直接上代码吧,写的时候遇到了点问题, 找到根源以后,就搞定了, 注意define的 语法, 错的挺郁闷的 // 20180110_01.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #define FileKey 0x86 //加载PE文件到内存中,并获取文件长...

阅读全文>>

ė258次浏览 60条评论 0

ReadProcessMemory

流沙 | C/C++ | 2018-01-06
测试进程之间互相读取信息 // 20180106_06.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #include <windows.h> int main(int argc, char* argv[]) { TCHAR szFileName[] = "c://ipmsg.exe"; STARTUPINFO si={0}; si.cb = sizeof(STARTUPIN...

阅读全文>>

ė258次浏览 60条评论 0

Ɣ回顶部