自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bobopeng

十年磨一剑

  • 博客(233)
  • 资源 (3)
  • 收藏
  • 关注

原创 socket网络编程中的数据传输的问题

在前面的很多博文中

2014-07-23 22:22:47 2621

原创 在windows系统下使用CMD进行服务操作

当使用“运行”输入serv

2014-07-22 17:16:35 1432

原创 在DLL 的DllMain函数中创建线程

最近在写一个代码的时候想在DLL的DllMain

2014-07-22 16:31:04 6813 2

转载 数据逆向分析(4)——识别结构体

结构体       struct是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。它的实现方法上和数组是一样的,即每一个成员的访问是直接寻址方式。唯一的区别是,为了提高访问效率,成员无论类型为何,编译器将它们按照4字节对齐。 eg:struct test       {            char str;            int i;     

2014-07-20 21:17:53 3312

转载 数据逆向分析(3)——识别字符串与数组

字符串    在C语言中,字符串是由字符组成,单字符不是字符串,至少有两个字符组成,且结尾字符是'/0'。    例如:"ABCD" 内存中实际储存结构是 41H 42H 43H 44H 00H     字符串的寻址,依靠首字节进行寄存器相对寻址方式:    例如:访问"ABCD"中的第二字节,byte ptr [ebx+1]     正是因为字符串的首字节索引的寻址方

2014-07-20 21:17:04 701

转载 数据逆向分析(2)——区分变量,常量以及指针

做数据逆向分析最先应该区分数据是常量、变量,还是指针。可是作为二进制数据本身不会标记自己是什么,然而编译器将不同的的类别储存在不同的区域。  变量数据应分为这两类:      1.局部非静态变量:对于1KB以下的该种变量,一般都要放在栈区,那么它的寻址必然用到ebp寄存器来间接变址进行寻址。另外,有些编译器(比如gcc)出于优化考虑,也会用到esp寄存器。举例:void

2014-07-20 21:13:26 826

转载 数据逆向分析(1)——开篇

许多人将软件逆向工程看做代码逆向工程,然而软件被看做是“软件=代码+数据”。那么对等的就应存在“数据逆向工程”,虽然数据逆向工程与代码逆向工程有交叉部分,但是它们各有侧重。代码逆向工程主要利用反汇编分析代码的执行流程。数据逆向工程重点在于数据结构和数据内容。       二进制文件的数据可以逆向,却不可能反汇编,因为数据连续的静静地躺在栈区和数据段,但为了分析数据,我们又不得不利用代码反汇编,

2014-07-20 21:12:24 2429

转载 C++设计一个简单的壳(1)

本文中的代码均来自《黑客免杀攻防》,如要转载,需写明来源,请勿用于非法用途,作者对此文章中的代码造成的任何后果不负法律责任。看了一遍书本的第11章,感觉内容确实比较高级,之前虽然自认为是热衷于搞C/C++开发,但是运用windows API的开发真的是太少了。先来看看一个简单的壳的编写。         这个加壳脱壳程序分为三部分,首先是用MFC写的界面程序,这个自然不用多说,主要功能就是

2014-07-20 21:08:51 1877

转载 C++设计一个简单的壳(2)

本文中的代码均来自《黑客免杀攻防》,如要转载,需写明来源,请勿用于非法用途,作者对此文章中的代码造成的任何后果不负法律责任。本文接上一篇简单的壳1.2.加壳部分         写这个部分的时候我自己对于这部分的代码也没有做到很熟悉,因为这部分相对于前一部分来说复杂了许多,后面就会看见。所以我也是通过再次巩固来进一步理解加壳的基本步骤。废话不多说,首先还是从声明部分说起。对了在这之前,最好

2014-07-20 21:08:13 1072

转载 关于PE病毒编写的学习(10)——空隙覆盖病毒的实现方法

这类病毒名字很多,选这个名字主要是它比较形象说明其感染方式,即将病毒代码分成多份,分别注入到程序各节由于对齐产生的空白中。 1.核心——病毒描述表  将病毒代码分割成多份,分别注入到未知地址的区域内,却能完整运行。这看似神奇,其实实现方法却很简单———建立病毒分割描述表 病毒分割描述表举例(汇编): Virus_Distribution struct;病毒片段描述符

2014-07-20 21:01:41 620

转载 关于PE病毒编写的学习(9)

原本这一篇应该和上一篇同时发,但是我的原来代码写得很烂,而且由于我的目标是编写一个“追加病毒”框架,代码又要具备良好的模块特征。这两天改来改去,已经头脑混乱了,所以还是先发文章把原来的代码挂上,有时间再改,我会配上说明。  另外提一句,我把一个bug写再AddSection这个函数里,很多教学码也故意写这个错误,这个错误本意是修改由于PE文件头的修改使“xx值”应适当变化,实际写入的是空位置,

2014-07-20 20:59:48 721

转载 关于PE病毒编写的学习(8)

OK,兑现我的承诺,从本章开始讲述“追加病毒”的编写方法。我们将实现一个只弹出对话框的良性病毒,但是考虑到这个代码可能造成的危害,我会在感染模块中写入一个小Bug。不过,对于大家的学习是毫无影响的。   回到正题,先介绍一下“追加病毒”,在DOS时代中,这种病毒相当常见。由于.com文件的入口点是固定的,而且我们知道DOS平台程序可以随意使用中断,因此追加病毒只要将病毒代码追加到宿主文件尾

2014-07-20 20:58:56 676

转载 关于PE病毒编写的学习(6)——关于PE文件结构操作的程序编写

对PE文件结构的各个值定义和作用,这里不提了,网上资源很多,百度一下就好了。所以,本章只说一下,作为代码编写者对PE文件结构操作的方法和技巧。还是通过改进代码,来体会一下吧。  你应该记得前面的BOOL IsPEFile(HANDLE hFIle) 这个函数吧,它的作用是判断文件是否为PE格式文件。它把文件句柄作为参数,虽然许多函数需要文件句柄这个参数,但是作为对PE文件结构操作的函数,这

2014-07-20 20:56:02 690

转载 关于PE病毒编写的学习(7)——定位API的N种方法

由于大部分的文件感染型病毒框架都不可以像“前置病毒”那样拥有自己的输入表,因此需要自行定位API说一千道一万,想要定位API,大方向是要定位Kernel32.dll的基地址。 总结所以这些方法,可以分为是五个小方向,它们又产生很多变种。 一、定位kernel32.dll基地址的方法(1)硬编码方式    由于kernel32.dll的基地址在相同版本windows下,基

2014-07-20 20:55:10 919

转载 关于PE病毒编写的学习(4)——关于遍历磁盘的讨论

在上一章中的“前置病毒”中,由于它只是一个测试病毒,因此该病毒只是搜索病毒文件所在文件夹的exe文件。 显然,为了让它具有更好传染性,能够历遍整个磁盘或某些重要文件夹的特性,是十分重要的。 开始讨论历遍之前,先让我们来改进原来的代码首先在上一章的代码中,只要结尾是“.exe”的文件就被判断为"可执行程序",这种方法在大多数情况下是正确的,但是如果程序经过压缩或加密后,该文件的P

2014-07-20 20:53:15 736

转载 关于PE病毒编写的学习(5)——病毒如何做标记和记录信息

1.做标记和记录信息的区别   做标记:它是为了其它病毒识别自己,而在固定或符合一定规则的位置上记录的符号信息。    记录信息:它是为了病毒本身正确运行,而存储的某些信息,甚至是部分代码,比如解密程序的随机密匙、所感染宿主文件的某些信息 2.那些地方可以做标记和记录信息   (1)可标记的位置       1/程序的入口区域和尾部区域;并非一定是开头和结尾,比如 

2014-07-20 20:51:59 873 1

转载 关于PE病毒编写的学习(2)

这篇说一下,PE病毒需要那些技术积累,以及这些技术的学习方法和重点是什么。 1.先说汇编吧       其实我说的汇编关于两个方面:汇编语言设计 和 微机原理       汇编语言设计,它也是两方面: 常规教材讲的 和 病毒的技巧       常规教材上讲的基本都得学会,最基本的8086/8088肯定都得会,各种书籍视频很丰富,学起来不难。80x86也是必须得学,建

2014-07-20 20:51:12 996

转载 关于PE病毒编写的学习(1)

首先声明,因为害怕被删帖,我肯定不会展示正确完整病毒代码,但是会介绍可行的学习方法。 网上有很多关于介绍PE病毒编写的帖子,但基本上都是分析源码FunLove和《计算机病毒分析与对抗》中PE病毒的代码翻版。事实上这两个代码是用于原理展示,前者根本通不过编译,后者编译后并不能正确运行,虽然有部分帖子对其做了修改,受到正统汇编教材代码的影响,导致其修改方法是错误的。 关于病毒编写充满了

2014-07-20 20:49:56 2029

转载 关于PE病毒编写的学习(3)

历史上,在windows95发布后,用高级语言编写的外壳病毒,经过简单地改造编译,就能从DOS平台迁移到windows平台上。并且在这当中很多“前置病毒”,仅仅需要重新编译。 另外之所以用“前置病毒”作为第一分析样本,理由如下:1.它具有基本病毒功能模块,这些模块在文件型病毒中是通用的2.其框架结构,所需病毒技巧极少3.拓展方便,通过不断地加入新功能,循序渐进的学习各种病毒

2014-07-20 20:49:39 780

转载 vc 6.0之DLL的调试

你写的DLL或者ActiveX需要调试,因为他们不能直接运行 ,所以不能够直接调试,那么可以试试下面的方法:1. 在Vc 6.0中新建一个Win32 Console Application工程(例如DLLTest),代码中调用需要调试的DLL,编译该工程,生成Debug/DLLTest.exe,关闭该工程。2. 打开VC 6.0,打开需要调试的DLL工程,点击菜单Build->Set Ac

2014-07-20 20:38:42 1189

转载 使用c++扩展python的功能

使用C++扩展Python的功能   环境VS2005Python2.5.4 Windows7(32位) 简介长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python来调用有点不一样(虽然本质是一样的)。而是指使用Python本身提供的API,使用C++来对Python进行功能性扩展,可以这样理解,使用更高效的语言实现一些算法计算等

2014-07-20 20:36:31 822

转载 C++调用python浅析

C++调用Python浅析   环境VS2005Python2.5.4 Windows XP SP3 简述一般开发过游戏的都知道Lua和C++可以很好的结合在一起,取长补短,把Lua脚本当成类似动态链接库来使用,很好的利用了脚本开发的灵活性。而作为一门流行的通用型脚本语言Python,也是可以做到的。在一个C++应用程序中,我们可以用一组插件来实现一些具有统一接口的

2014-07-20 20:32:29 946

转载 每个程序员都应该做事情——代码审查( Code review )

翻译:magictong(童磊)2011年9月版权:Mack CC原文地址:http://scientopia.org/blogs/goodmath/2011/07/06/things-everyone-should-do-code-review/原文名称:Things Everyone Should Do: Code Review       之前在一些项目中发现,修改代

2014-07-20 20:31:49 876

转载 PE病毒技术剖析

任何语言只要表达能力足够强,都可用于编写PE病毒。但现存的绝大部分PE病毒都是直接用汇编编写的,一方面是因为汇编编译后的代码短小精悍,可以充分进行人工优化,以满足隐蔽性的要求;另外一方面之所以用汇编是因为其灵活和可控,病毒要同系统底层有时甚至是硬件打交道,由于编译器的特点不尽相同,用高级语言实现某些功能甚至会更加麻烦,比如用汇编很方便地就可以直接进行自身重定位、自身代码修改以及读写IO端口等操作,

2014-07-20 18:24:48 1833

转载 给进程提权的3个方法

第一个方法:bool EnableDebugPrivilege() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TO

2014-07-20 17:14:21 2467

原创 GetLastError函数返回值的含义

通常只有在发生了错误的情况下,嗲GetLastError的返回值的含义:(0)-操作成功完成。(1)-功能错误。(2)- 系统找不到指定的文件。(3)-系统找不到指定的路径。(4)-系统无法打开文件。(5)-拒绝访问。(6)-句柄无 效。(7)-存储控制块被损坏。(8)-存储空间不足,无法处理此命令。(9)-存储控制块地址无效。(10)-

2014-07-20 17:08:04 1151

原创 在Windows下使用LoadLibrary导入自定义的DLL出现998错误

今天在使用LoadLibrary导入自定义的一个DLL的时候出现了998的错误

2014-07-20 17:06:31 4077

转载 深入解析完成端口(Completion Port )

手把手叫你玩转网络编程系列之三   完成端口(Completion Port)详解                                                             ----- By PiggyXP(小猪)前 言         本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿

2014-07-18 06:18:32 918

原创 通过直接读取修改exe文件的方式编写远控/木马配置器

一般的远控或木马都有配置器,

2014-07-17 22:07:34 3683

转载 Windows服务编写原理及探讨(4)

(四)一些问题的讨论   前面几章的内容都是服务的一些通用的编写原理,但里面隐含着一些问题,编写简单的服务时看不出来,但遇到复杂的应用就会出现一些问题,所以本章就是用来分析、解决这些问题的,适用于高级应用的开发人员。我这一章的内容都是经过实验得到的,很有实际意义。  我在第一章里面就说过,是由一个服务的主线程执行CtrlHandler函数,它将收到各种控制命令,但是真正处理命令

2014-07-17 00:13:44 492

转载 Windows服务编写原理及探讨(3)

(三)对服务的深入讨论之下现在我们还剩下一个函数可以在细节上讨论,那就是服务的CtrlHandler函数。  当调用RegisterServiceCtrlHandler函数时,SCM得到并保存这个回调函数的地址。一个SCP调一个告诉SCM如何去控制服务的Win32函数,现在已经有10个预定义的控制请求:Control codeMeaning

2014-07-17 00:11:55 685

转载 windows服务编写原理及探讨(2)

(二)对服务的深入讨论之上  上一章其实只是概括性的介绍,下面开始才是真正的细节所在。在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是一个SERVICE_TABLE_ENTRY的例子:SERVICE_TABLE_ENTRY serv

2014-07-17 00:07:23 546

转载 Windows服务编写原理及探讨(1)

有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。(一)服务的基础知识Question 1. 什么是服务?它的特征是什么?  在NT/2000中,服务是一类受到操作系统优待的程序。一个服务首先是一个Win32可执行程序,如果要写一个功能完

2014-07-16 23:58:42 512

原创 DLL编程基础

DLL是组成windows系统的基石,在很多情况下的编程是

2014-07-15 23:06:57 576

原创 远程线程注入DLL技术实战分析

先贴代码,代码是可以运行的

2014-07-15 22:45:13 945

原创 关于vc++ 6.0 SDK的配置

现在由于VS的强大集成性,用户已经不需要自己安装sdk了

2014-07-13 20:36:08 3856 1

转载 MFC中用户自定义类响应自定义消息

这篇技术文章不是讨论经典的MFC中的消息工作机理的,讨论消息工作原理、方式和路径的文章在网上和书本中随处可见。网上众多的讨论都是关于如何响应并进 行用户自定义消息映射的;网上还有一些文章介绍如何在自定义类中响应Windows消息,在本文中都简略叙述。但是,网上大部分的文章没用透彻阐述如何在 用户自定义类中响应自定义消息这一通用方法。问题定义如下:用户自定义一个类,这个类不一定要有界面(完全可以

2014-07-13 15:08:23 808

原创 windows的消息机制

windows是基于“事件驱动,消息响应”的一个操作系统,用户使用外部设备对OS产生一个事件(例如:鼠标点击,键盘按键等),OS会把这个事件封装成一个消息(对应一个数据结构),然后由系统调用用户设置的该消息的响应函数(这个响应函数是一个回调函数)完成整个操作过程。可以看出,这个过程中用户只需要“产生事件”和“为这个事件对应的消息绑定一个回调函数,这个回调函数是给系统来调用的,这也是为什么叫“回调”

2014-07-13 03:05:52 893

原创 以事件通知线程结束,并等待线程安全退出

有关windows下的线程以及一部通信机制的一些

2014-07-12 23:06:57 3782

转载 WinSock2编程之打造完整的SOCKET池

在Winodows平台上,网络编程的主要接口就是WinSock,目前大多数的Windows平台上的WinSock平台已经升级到2.0版,简称为WinSock2。在WinSock2中扩展了很多很有用的Windows味很浓的SOCKET专用API,为Windows平台用户提供高性能的网络编程支持。这些函数中的大多数已经不再是标准的“Berkeley”套接字模型的API了。使用这些函数的代价就是你不能再

2014-07-10 23:44:16 741

windows程序设计

windows程序设计,PPT 消息机制,基础

2013-01-03

Windows消息机制

Windows消息机制

2013-01-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除