LoadLibrary和GetModuleHandle的区别

流沙 | C/C++ | 2018-02-02
写代码的时候注意到的,以前没注意这两个函数的用法 主要区别: LoadLibrary是把一个模块映射进调用进程的地址空间,需要时增加引用计数 而GetModuleHandle是返回一个已经映射进调用进程地址空间的模块的句柄 并不增加引用计数 使用GetModuleHandle可以判断做需要加载的模块是否已经被加载(到调用进程的地址空间). 代码1: typedef void *(__stdcall *pfVirtualAllocEx)(unsigned long, void *, unsigned long, unsigned long, u...

阅读全文>>

ė187次浏览 60条评论 0

运行内存中的exe(二)

流沙 | C/C++ | 2018-02-02
0x01 学习进程注入的知识, 调试的代码 代码不是很完整, 已经写了很长的时间了, 终点遇到了各种各样的问题, 好多还没有解决!! 判断EXE在其他线程中运行,直接查询WinMain的地址, 进行比对 修复IAT表, 有些可以实现,修复, 有些事修复不了的, 看什么样的程序, 好多限制 0x02 代码贴上来, 有两段代码, 一段 pack端, 一段exe的back端 自己能看懂, 主要学习思路吧 0x03 代码下载地址 vc_code_20180202.zip

阅读全文>>

ė226次浏览 60条评论 0

双进程调试小结

流沙 | C/C++ | 2018-02-01
写一下方法就可以了, 1、CE查看内存数据, 只要确定内存地址, 就可以查看远程线程中的内存 2、 OD直接附加进程, 点位内存中的位置, 下断点 进行调试 找到自己程序写错的位置,真心很好的调试方法!!

阅读全文>>

ė192次浏览 60条评论 0

CreateRemoteThread简单运用

流沙 | C/C++ | 2018-01-31
测试代码可行, 推荐给大家 #pragma once #include <windows.h> #include <TlHelp32.h> #include "stdio.h" //线程参数结构体定义 typedef struct _RemoteParam { char szMsg[12]; //MessageBox函数中显示的字符提示 DWORD dwMessageBox;//MessageBox函数的入口地址 } RemoteParam, * PRemoteParam; ...

阅读全文>>

ė176次浏览 60条评论 0

运行内存中的exe(一)

流沙 | C/C++ | 2018-01-31
0x01 主要功能, 加载一个exe到 一个内存中, 并运行这块内存 0x02 有限制条件, EXE必须具有重定位表, 否则运行失败!! 截图 pid模块还没写完 想把进程移植到指定的 PID中运行! 0x03 关键代码 (有参考价值的代码,  重定位表的修复,  导入表的修复) // 20180118_20.cpp : Defines the entry point for the ap...

阅读全文>>

ė225次浏览 60条评论 0

win7 桌面图标异常

流沙 | 运维 | 2018-01-30
修复; 点击 开始 运行 输入 cmd 右键,选择“粘贴”以下代码;敲下回车就哦了! taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local  del iconcache.db /a  start explorer.exe  exit 

阅读全文>>

ė175次浏览 60条评论 0

ReadProcessMemory 与 WriteProcessMemory

流沙 | C/C++ | 2018-01-29
修改一个程序的过程如下:1、获得进程的句柄 2、以一定的权限打开进程 3、调用ReadProcessMemory读取内存,WriteProcessMemory修改内存,这也是内存补丁的实现过程。下面贴出的是调用ReadProcessMemory的例程 #include <windows.h> #include <tlhelp32.h> BOOL CALLBACK EnumChildWindowProc(HWND hWnd,LPARAM lParam);//枚举记事本中的子窗口 char mess[999999]; int WIN...

阅读全文>>

ė198次浏览 60条评论 0

代码跳转到指定位置

流沙 | C/C++ | 2018-01-28
因为测试源码的失败,这里写一下原理和贴图 0x01 控制进程上下文 GetCurrentThread GetThreadContex 0x02 获取汇编的地址位置,修改Context memcpy [ctx.Ebx+8]内存处存的是外壳进程的加载基址,ctx.Eax存放有外壳进程的入口地址 0x03 __asm{     jmp  addr }

阅读全文>>

ė210次浏览 60条评论 0

PeLoader测试失败

流沙 | C/C++ | 2018-01-28
测试VirtualAlloc 的函数 一直提示 487 错误  无法解决!! 为了加深对PE文件结构的理解,写了个简单的模拟PE文件加载过程的程序,不过程序有些地方没处理好(资源节处),也存在这些小bug写的分四个文件写的,如下: ReadFile.h : 代码: #include <stdio.h> #include <windows.h> #include <assert.h> HANDLE OpenFile(char *name); int ReadFile(HANDLE ...

阅读全文>>

ė209次浏览 60条评论 0

记一下一个头文件

流沙 | C/C++ | 2018-01-25
#include <windows.h> #include <winnt.h> 用#include <winnt.h>   记得前面加上 #include <windows.h>   调试了半天, 我去!!!

阅读全文>>

ė174次浏览 60条评论 0

[转]简单的PELoader

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

阅读全文>>

ė184次浏览 60条评论 0

[待写]项目流程

流沙 | C/C++ | 2018-01-24
ė177次浏览 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则是局部钩子) ...

阅读全文>>

ė192次浏览 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 &...

阅读全文>>

ė232次浏览 60条评论 0

DLL的远程注入技术

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

阅读全文>>

ė176次浏览 60条评论 0

远程线程注入

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

阅读全文>>

ė164次浏览 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...

阅读全文>>

ė196次浏览 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...

阅读全文>>

ė203次浏览 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...

阅读全文>>

ė209次浏览 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 ...

阅读全文>>

ė184次浏览 60条评论 0

Ɣ回顶部