- 博客(11)
- 资源 (40)
- 收藏
- 关注
原创 关于Vs Debug和Release版本的区别
一直很好奇Debug和Release版本的区别:以Debug发布的程序安装到客户处,双击运行后会提示缺各种dll文件,整的跟水土不服似的。无奈只能发布Release的。对于Release的程序出错了实在不好定位,因为没有pdb文件连个变量名都找不到。虽然可以在关闭优化选项的同时生成调试数据库,但总觉得Release工程调试起来没Debug的顺手。网上找了找关于Debug和Release的区别,这里
2015-06-29 23:44:47 817
原创 延迟加载库的应用:Dll嵌入可执行文件中
搜索到一篇英文文章:Packing Dlls into your exe 文章大意是把dll文件嵌入到可执行文件的资源表中,用延迟加载方式编译链接可执行文件。由于所依赖的dll在正式调用时才被加载,因此能顺利的通过链接阶段。Exe正式运行时,先搜索文件资源表,获得嵌入到资源区中dll并保存到磁盘,然后调用。调用完卸载和删除该Dll。我也顺着这个思路做了一遍,记录于此。 要嵌入dll,首先
2015-06-29 14:40:51 916
原创 延迟加载Dll
这阵子看PE文件,看到延迟加载数据目录项。以前没用过这功能,就顺带学习了一下其应用。网上找的方法不是很好用,就google了一把,找了台湾某个大学的教学例程,包括3个压缩文件这里简单介绍一下各个文件的内容:1).DelayLoadDemo.zip: 创建基本的延迟加载工程;Dll创建过程和普通的没有什么差别,引用该Dll的Exe程序需要在工程属性->连接->输入中做一些设置,这些设置已经保存在
2015-06-29 13:57:19 1382 1
原创 绕过__chkesp堆栈检查
前面很多注入相关的文章中都提到为了保证注入后原始程序能恢复正常的执行流,需要在编译器中关闭堆栈检查。作为解决问题,这是个好手段,但是不得不说这是回避问题,不是解决问题。本文旨在解决这个问题。 __chkesp,顾名思义,检查esp的值,检查失败就抱错。什么时候esp会出错?情况很多,如果排除缓冲区溢出的可能,那还有堆栈失衡的情况。比如不正常的退出函数方式。我经常遇到的不正常退出函数引
2015-06-23 23:36:04 2688
原创 Dll导出表Hook
#include "stdafx.h"#include #include #pragma comment(lib,"user32.lib")typedef int (*detour_MessageBoxA)(HWND hWnd,LPCSTR,LPCSTR,UINT);detour_MessageBoxA msg;char origInstr[8] = {0};char newIn
2015-06-23 16:01:11 1348
原创 C++ 在Ring3下的通用API HOOK
原文转自:http://www.cnblogs.com/AniX/archive/2010/10/26/1861693.html 代码部分我做过整理说道API HOOK ,这已经是老掉牙的技术了,但是它的实用性却是不能忽视的。虽然在网上这类的文章很多,但大多数的实现方法是将一个函数的前5字节直接改为 jmp XXXX 。这种方法虽然简单可行,但是不通用,因为一些特殊函数的前5字节不是完整
2015-06-23 15:40:24 1149
原创 LD_PRELOAD应用--基于libvirt审计(上)
转载请表明出处,本人邮箱:562703006@qq.com 随着近年来虚拟化技术飞速发展,使用虚拟化工具的人数日趋增加,同时孕育了大量相关产业。libvirt虚拟化审计就是在这个背景下产生的。 libvirt提供了统一抽象的虚拟化管理平台---libvirtd服务器,通过他可以与主流的虚拟化平台交互,例如QEMU/KVM等, 将用户虚拟机请求发送给特定具体的虚拟化介质,由该
2015-06-20 13:53:06 1023
原创 IRP和IO_STACK_LOCATION结构的关联
IRP结构中的IRP!StackCount--IRP!CurrentLocation--IRP!CurrentStackLocation三个字段关系错综,仅以此文已做备忘。//IRP结构后面接一个IO_STACK_LOCATION数组typedef struct _IRP { CSHORT Type; USHORT Size; struct _MDL *MdlAddress
2015-06-14 21:46:11 1785
原创 调试LD_PRELOAD注入的代码
LD_PRELOAD提供了平民化的注入方式固然方便,同时也有不便:注入库出错后调试比较困难。我琢磨了几天找到了可行的调试方法,当然未必是最有效的办法。抛出陋文,希望引来美玉~ 首先,写一段代码作为普通的动态库,公开接口,供人调用,如下://true.cint fake(const char* s1,const char* s2){ return 0;}gcc -g3
2015-06-10 23:19:11 3403
原创 解决LD_PRELOAD无法截获printf的问题
前面博文 Linux下入门级导出函数截获-使用LD_PRELOAD环境变量 中说道用LD_PRELOAD的方法截获动态库中的函数,有人问我不能截获printf,我就在此文中回答这个问题吧。 首先看下他写的用于拦截的代码和测试代码拦截代码#include extern void printf(const char *format,...);void printf(const
2015-06-06 19:52:57 1810 2
原创 使用pkg-config升级和切换glib库
前几天有人问我如何升级glib库,并在各个版本之间切换。本想用rpm安装的,结果发现glib安装包不支持修改安装目录,如下图。 如此,只能在编译源码时指定安装路径了。其实,我这是为了演示升级才安装glib库,我本身不需要它,所以不要问我如何使用glib提供的功能~ 首先下载了glib2.4,解压后看看glib提供了哪些配置选项(都说只是演示库的升级,我并不想完整安装
2015-06-06 17:19:15 4239
Windows 10 x64 hal.zip
2020-04-20
Anti-DBG.zip
2017-09-23
Anti-DbgV2.zip
2017-09-23
checked build acpi.sys
2016-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人