Technology_PC
文章平均质量分 69
xuplus
谦虚谨慎,不骄不躁……
三人行必有我师……
展开
-
Lzma(7-zip) SDK LzmaCompress 使用心得
在C目录中有算法文件,进入Util\LzmaLib目录,编译生成LIB库,导出了以下两函数,LzmaCompress 为压缩函数,LzmaUncompress 为解压缩函数。MY_STDAPI LzmaCompress(unsigned char *dest, size_t *destLen, const unsigned char *src, size_t srcLen, unsi原创 2014-08-17 10:35:49 · 14481 阅读 · 0 评论 -
变量和运行时堆栈(Thinking in C++)
没事的时候在看英文版的Thinking in C++ ,准备翻译部分内容,觉得本部分内容对于编程来说还是相当重要 在程序运行期间一直存在的静态变量和外部变量存在于地址的高端。每当函数被调用的时候,一个包含函数的自动变量的帧(活动记录)产生,这些帧构成了一个运行时的堆栈。 为详细解释运行时堆栈的操作,让我们会想一下计算n的阶乘的程序:f(n)=n*f(n-1);。每一次调用阶乘的函数的时候,原创 2008-05-13 18:31:00 · 1954 阅读 · 0 评论 -
Windbg使用指南(1)---常用命令
debug常用命令解析:1 !address eax查看对应内存页的属性2 vertarget 显示当前进程的大致信息3 !peb 显示process Environment Block4 lmvm 可以查看任意一个dll的详细信息 例如:0:026 lmvm msvcrt (deferred)表示察看msvcrt.dll的信息,但是没有加载symbol可以通过.reloa原创 2008-05-13 15:58:00 · 1275 阅读 · 0 评论 -
汇编语言的准备知识
汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机) ============================ x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. 有些指令表面上没有操作数, 或者看上去缺少操作数, 其实该指令有内定的操作对象, 比如push指令, 一定是原创 2008-05-13 18:29:00 · 991 阅读 · 0 评论 -
汇编语言超浓缩教程
“ 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试原创 2008-05-13 18:16:00 · 829 阅读 · 0 评论 -
强名称的作用机理
一个程序集包括四个区分彼此的属性:l 文件名(不包括扩展)l 版本号l 文化标识l 公钥标识现在让我们来看看一个比较常见的强名称程序集:l Name= MSCorLibl Version=1.0.3300.0l Culture=neutrall PublicKeyToken=b77a5c561934e089如果我们自己编写一个弱名称程序集,那么通常PublicKeyToken这一项就没有。下面原创 2008-05-09 09:49:00 · 1360 阅读 · 0 评论 -
DgbView 调试类
#ifndef __MYDBG_HEADER_FILE_#define __MYDBG_HEADER_FILE_#define __DBG_RELEASE#ifdef __DBG_RELEASEvoid DbgPrintfA(LPCSTR lpFmt,...);void DbgPrintfW(LPCWSTR lpFmt,...);void DbgDumpBuf(const void* pB原创 2008-05-08 13:21:00 · 1315 阅读 · 0 评论 -
预编译头文件的详细介绍
如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么 1。把这些头文件全部写到一个头文件里面去,比如写到preh.h 2。写一个preh.c,里面只一句话:#include "preh.h" 3。对于preh.c,在project setting里面设置creat precompiled headers,对于其他 .c文件,设置use precompiled header原创 2008-07-10 21:33:00 · 896 阅读 · 0 评论 -
vc++6.0 IDE配置详解
大家可能一直在用VC 开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢?原创 2008-07-10 21:25:00 · 3390 阅读 · 3 评论 -
如何双击*.dsw 文件快速打开VC++6.0工程
装完VC6.0后,如果用鼠标双击VC6.0工程文件 *.dsw,会启动第一个VC6实例,如果想用鼠标双击*.dsw的方法打开第二个工程,则第二个工程会将第一个VC6实例覆盖掉。如何实现每次双击*.dsw文件都启动一个新的VC实例而不是覆盖表以前的呢?可以进行如下设置:资源管理子-》工具-》文件夹选项-》文件类型-》“已注册的文件类型”列表里面找到DSW类型并选中,点击“高级”,去掉“DDE原创 2008-05-05 11:06:00 · 6934 阅读 · 1 评论 -
Early Stages of the (Visual) C++ .Net 17
<!--google_ad_client = "pub-8089415323104206";google_ad_width = 468;google_ad_height = 15;google_ad_format = "468x15_0ads_al_s";//2007-03-16: visualcplusgoogle_ad_channel = "535237731原创 2008-05-06 11:15:00 · 877 阅读 · 0 评论 -
不错的MFC教程
http://www.vczx.com/tutorial/mfc/mfc.php原创 2008-04-30 10:45:00 · 719 阅读 · 0 评论 -
什么是字节对齐,为什么要对齐?
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU原创 2008-04-29 14:10:00 · 1312 阅读 · 1 评论 -
(译)使用WinDBG进行内核调试(Fundamentals)
(译)使用WinDBG进行内核调试(Fundamentals) By xikug.xp前面我们已经小试了牛刀。这里我们将介绍调试器的基本操作。Commands, extensions, etc.有几种命令:普通命令(没有任何修饰),以句点开始的命令(“.”)和以一个惊叹号开始的命令(“!”)。Debugging Tools for Windows的帮助对这几种命令分别解析为普通原创 2008-05-13 18:41:00 · 1028 阅读 · 0 评论 -
启动一个进程,并让他等待接收消息
// Start the child process. if( !CreateProcess( NULL, // No module name (use command line). _T("explorer.exe"), // Command line. NULL, // Process handle not inheritable. NULL,原创 2008-05-13 10:19:00 · 804 阅读 · 0 评论 -
vmvare + windbg 调试设置
/fastdetect /debug /debugport=com1 /baudrate=115200 boot.ini 设置这个-k com:port=//./pipe/com_1,baud=11520,pipe 创建Windgb快捷方式后,在“目标”后面追加:"D:/Program Files/Debugging Tools for Windows/windbg.exe" -k原创 2008-05-17 14:52:00 · 776 阅读 · 0 评论 -
进程隐藏与进程保护(SSDT Hook 实现)(二 视频加密软件推荐
文章目录: 1. 引子 – Demo 实现效果:2. 进程隐藏与进程保护概念:3. SSDT Hook 框架搭建:4. Ring0 实现进程隐藏:5. Ring0 实现进程保护:6. 隐藏进程列表和保护进程列表的维护:7. 小结: 1. 引子 – Demo原创 2014-06-30 22:26:14 · 2337 阅读 · 0 评论 -
使用openssl库实现des,3des加密
说明:最近工作中用到3des(Triple DES)加密,网上的资料大部分都是介绍算法原理,没什么兴趣,man了一下查到openssl提供DES_ecb3_encrypt方法,正合我意!提示:openssl库支持很多加密算法哦,如:AES/DES/MD5/RSA...,而且很轻松的支持其他平台,我就在winXP下安装了openssl并在VC中设置头文件目录及库文件目录,用来是用op原创 2008-07-03 10:29:00 · 22041 阅读 · 5 评论 -
win7 64 DLL的远程注入技术 及注入dll函数调用
一、DLL注入DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载,用户也就无法在资源管理器原创 2014-06-30 22:15:13 · 14362 阅读 · 0 评论 -
Mac OS中如何显示和隐藏文件
一直以来都用的Windows系列的系统,最近小编在电脑上装了苹果的雪豹系统,初次使用,很多东西不了解,只能一步步学西了,今天将给大家介绍如何在苹果系统中显示和隐藏文件。在Mac OS下,让文件显示或者隐藏有很多设置方法,最简单的就是在Mac终端输入命令。显示或者隐藏文件的命令如下(注:要区分空格和大小写) 显示Mac隐藏文件的命令:defaults write com.app原创 2014-03-20 20:58:27 · 874 阅读 · 0 评论 -
VC++编程实现修改EXE文件图标
刚才发现论坛上面有网友问:如何通过编程实现修改EXE文件的图标,类似于 熊猫烧香 的效果!自己也对这个比较感兴趣网上找了找,找到了两种方法,可以满足大家都要求了,这里面收集转载过来,大家可以实践下,看看好不好用,起码有代码可以参考:方法一:通过API编程实现:这个问题以前在CSDN上解答过,但是当时只是提了提几个要用到的函数,自己并没有去动手写实现。前几天和某人讨论这个问题,他认为原创 2014-04-15 10:33:55 · 1576 阅读 · 1 评论 -
U盘访问记录时间获取问题
需要查找计算机使用U盘的记录,我知道通过注册表能找到使用过哪些U盘,能得到U盘名称以及相应的参数信息,但是我还想得到U盘的使用时间,比如第一次使用时间,最后使用时间,或者有可能,最好能得到每次使用的时间.我仔细检查过注册表,没有找到有关时间的记录;不知道是我没有找到,还是存在别的文件里,希望知道的人指点一下 我的程序不会实时的运行在电脑里,所以通过DEVICECHANGE来记录时间是用不转载 2014-04-15 10:38:20 · 11739 阅读 · 1 评论 -
IOCP的几点开发心得
IOCP以其高效的性能受到服务器开发者的青睐,本人有幸在当前的项目中使用了该异步模型,修改调试之余,总结出开发过程中的经验若干,供大家借鉴。 首先是需要注意的是OVERLAPPED结 IOCP以其高效的性能受到服务器开发者的青睐,本人有幸在当前的项目中使用了该异步模型,修改调试之余,总结出开发过程中的经验若干,供大家借鉴。 首先是需要注意的是OVERLA原创 2012-03-20 22:04:56 · 1085 阅读 · 0 评论 -
VC编写Demo Scene的一些可能技巧
本来也不是专门为了写这篇文章,只不过觉得已这样的形式发表比较合适。同时好久都没有写过教程了,以往都以简单的发表作品或者通报一些事情为主。总的来说这篇文章还是有点参考价值的,希望能有所帮助。 转载注意:请注明原文出处: http://www.csksoft.net/blog/post/demo_scene_tip1.html Demo Scene我就不想再介绍了,对他还不了解或者原创 2008-06-26 15:21:00 · 1562 阅读 · 0 评论 -
如何通过崩溃地址找到出错的代码行
这是从“VC编程经验总结7”中转出来的 借花献佛——如何通过崩溃地址找到出错的代码行 作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的--那就是,程序发生了崩溃! “该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$Content$nbsp;的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自转载 2008-06-04 09:53:00 · 1148 阅读 · 0 评论 -
WDM系统入门基础篇
WDM(Win32 Driver Model),即Win32驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。 除了通用的平台服务和扩展外,WDM还实现了一个模块化的、分层次类型的微型驱动程序结构(见图1)。类型驱动程序实现了支持通用总线、协议或设备类所需的功能性接口转载 2008-04-22 10:37:00 · 3030 阅读 · 0 评论 -
重建 PE 文件的输入表 TiTi
标题:重建 PE 文件的输入表原著:TiTi/BLiZZARD 翻译:Sun Bird [CCG] 日期:2000年5月24日 1. 前言 ======= 大家好 :) 我之所以写这篇短文,是由于我在 Dump 时发现,很多加压、加密软件都使得输入表(Import Table)不可用,所以 Dump 出的可执行文件必须要重建输入表。而在普通的讲授 Win32 汇编的站点上我没有转载 2008-04-21 18:52:00 · 2427 阅读 · 0 评论 -
使用ZwLoadDriver加载驱动
#include #include typedef struct _LSA_UNICODE_STRING { USHORT Length; USHORT MaximumLength; PVOID Buffer;} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; typedef LSA_UNICODE_STRING UNICODE_STRING,转载 2008-04-21 16:38:00 · 3902 阅读 · 0 评论 -
从内存中加载并启动一个exe
windows似乎只提供了一种启动进程的方法:即必须从一个可执行文件中加载并启动。而下面这段代码就是提供一种可以直接从内存中启动一个exe的变通办法。用途嘛, 也许可以用来保护你的exe,你可以对要保护的 exe 进行任意切分、加密、存储,只要运行时能将exe的内容正确拼接到一块内存中,就可以直接从内存中启动,而不必不安全地去生成一个临时文件再从临时文件启动进程。另外这段代码也提供了一种自己写ex转载 2008-04-15 17:07:00 · 1319 阅读 · 0 评论 -
VirtualAllocEx 跨进程读写数据 代码注入
VirtualAllocEx 函数的作用是在指定进程的虚拟空间保留或提交内存区域,除非指定MEM_RESET参数,否则将该内存区域置0。 LPVOID VirtualAllocEx( HANDLE hProcess, // 申请内存所在的进程句柄 LPVOID lpAddress, // 保留页面的内存地址;一般用NULL自动分配 SIZE_T dwSize, // 欲分配的内存大小,字节原创 2008-04-15 16:33:00 · 7591 阅读 · 0 评论 -
导出表 export table
理论:当PE装载器执行一个程序,它将相关DLLs都装入该进程的地址空间。然后根据主程序的引入函数信息,查找相关DLLs中的真实函数地址来修正主程序。PE装载器搜寻的是DLLs中的引出函数。DLL/EXE要引出一个函数给其他DLL/EXE使用,有两种实现方法: 通过函数名引出或者仅仅通过序数引出。比如某个DLL要引出名为"GetSysConfig"的函数,如果它以函数名引出,那么其他DLLs转载 2008-04-17 11:51:00 · 1683 阅读 · 0 评论 -
加壳相关的一点点知识,跟病毒类似
一。免杀1。最简单的:加壳Svkp,Pelock,Telock,Asprotect等等牛壳,或者一些私人壳如免役007之类的,虽然方便,但免杀效果不一定好,因为现在杀毒会把壳的特征当病毒或者把加壳后的特征也收录,而且加壳的不能用于内存代码注射2。手工免杀用CCL一类的定位工具定位出特征码,不同的杀毒的特征录入是不一样的,而且不止一处,所以免杀是体力活;然后逐一修改定位出来的特征码,例如修改入口(代转载 2008-04-17 11:39:00 · 972 阅读 · 0 评论 -
CreateRemoteThread和WriteProcessMemory技术
CreateRemoteThread和WriteProcessMemory技术 示例程序:WinSpy另一种注入代码到其他进程地址空间的方法是使用WriteProcessMemory API。这次你不用编写一个独立的DLL而是直接复制你的代码到远程进程(WriteProcessMemory)并用CreateRemoteThread执行之。让我们看一下CreateRemoteThread转载 2008-04-16 10:27:00 · 8128 阅读 · 2 评论 -
如何合并DLL到你的EXE程序中
引用张尹 的 如何合并DLL到你的EXE程序中作者:任明汉 转自vckbase下载源代码 前言 你可能不希望在发布程序时附带上一个外部的 DLL,因为可能会有些用户在无意中把 DLL 删除了而造成 EXE 不能正确运行,也有可能该 DLL 会被别人拿去使用,也有可能,此 DLL 会成为破解者破解你的程序的突破口。无论出于何种原因,如果你想把一个 DLL 合并到一个 EXE 中转载 2008-04-15 21:06:00 · 8987 阅读 · 0 评论 -
重定位相关知识,为什么要重定位
在NT环境下隐藏进程,也就是说在用户不知情的条件下,执行自己的代码的方法有很多种,比如说使用注册表插入DLL,使用Windows挂钩等等。其中比较有代表性的是Jeffrey Richer在《Windows核心编程》中介绍的LoadLibrary方法和罗云彬在《windows环境下32位汇编语言程序设计》中介绍的方法。两种方法的共同特点是:都采用远程线程,让自己的代码作为宿主进程的线程在宿主进程的地转载 2008-04-15 13:25:00 · 11980 阅读 · 0 评论 -
通过病毒原理较好的阐述了如何在pe中添加一个section
PE 文件的修改和感染策略 既然已经能够搜索磁盘及网络共享文件中的所有文件,要实现寄生,那么自然下一步就是对搜索到的PE文件进行感染了。感染PE的很重要的一个考虑就是将病毒代码写入到PE 文件的哪个位置。读写文件一般利用Win32 API CreateFile、CreateFileMapping、MapViewOfFile等API以内存映射文件的方式进行,这样可以避免自己管理缓冲的麻烦,因而为较转载 2008-04-15 13:17:00 · 2583 阅读 · 0 评论 -
重定位的原理&实现
重定位 病毒自身的重定位是病毒代码在得以顺利运行前应解决的最基本问题。病毒代码在运行时同样也要引用一些数据,比如API 函数的名字、杀毒软件的黑名单、系统相关的特殊数据等,由于病毒代码在宿主进程中运行时的内存地址是在编译汇编代码时无法预知的,而病毒在感染不同的宿主时其位于宿主中的准确位置同样也无法提前预知,因此病毒就要在运行时动态确定其引用数据的地址,否则,引用数据时几乎肯定会发生错误。对于普通转载 2008-04-15 12:01:00 · 7935 阅读 · 0 评论 -
EXE文件的重定位表起作用
=====重定位表的使用方法为(我自己的理解):文件的实际装入地址-文件的建议装入地址=修正值实际装入地址+VirtualAddress+重定位项中的地址=需要重定位的代码在内存中的位置修正值+需要重定位的代码=正确的代码(只需要把地址加上修正值)只需要定位到需要重定位的代码在内存中的位置把该处的代码修改成正确的代码即可。注:上面说的代码应该是用于立即寻址的地址。=====算法:1.计算修正值(修转载 2008-04-15 11:40:00 · 3196 阅读 · 0 评论 -
windows内存结构
NT/2000的每一个进程都在启动时分配了4GB(0xFFFFFFFF)的虚拟内存。其中的某些部份实际上是由所有进程共享的,例如核心和设备驱动程序区域。但它们都会被映射到每个进程的虚拟地址空间里。实际上没有进程分配到4GB的物理内存,而是仅当需要时才分配物理内存。因此每一个进程都有各自的4GB虚拟内存,编址范围从0x00000000到0xFFFFFFFF。其中,0x00000000-0x000转载 2008-04-15 17:10:00 · 637 阅读 · 0 评论 -
完美界面换肤解决方案 vc调用delphi皮肤库
http://www.vckbase.com/code/viewcode.asp?id=3120VC里边界面换肤是比较头痛的问题,网上有不少介绍,但是大多数仅仅提供Dll或者Lib,有代码的又有很多问题,效果很差。这几日突然想到一个解决方案,有源码,皮肤有一百多个,就是采用Delphi里边成熟的界面组件vclskin,将它做成Dll来用,效果相当不错,赶紧介绍给大家。zhai_hong_tao转载 2008-04-15 17:39:00 · 1370 阅读 · 1 评论