自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (7)
  • 收藏
  • 关注

转载 cdecl、stdcall、fastcall是什么?哪种可以实现个数不定的入口参数,为什么?

三者都是函数调用的约定。cedel:c declare(c调用约定)的缩写,是c和c++程序的缺省调用方式,规则是,从又向左的顺序压参数入,由调用者把参数弹出栈,对于传入参数的内存栈是由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定的入口参数(可变参数)。stdcall:是pascal程序的缺省调用方式,规则是,按从右向左的顺序入栈,被调用的函数在返回前清理传送参数的

2013-05-30 21:48:23 898

翻译 C++使用igraph 3.3j计算图中不同的属性值

在我们接下来的例子中,我们会在友谊路径(是友谊路径吗?...)中以不同的方法量化向心性。"友谊路径"来自于著名的圣札空手道俱乐部的练习大纲中,(如果你想了解的更多的话,可以在internet中搜索"Zachary karate",),向心性的计算将会量化各个孤立顶点与图中心的关系值。#include #include "include\igraph.h"#pragma comment(

2013-05-30 20:38:16 1942

原创 启动函数反汇编

如果随便问一个windows程序员程序的执行是从哪里开始的,最可能听到的答案是WinMain,其实这是错误的,首先接收控制的是启动代码,它是编译器在不知不觉中插入到程序之中的,在执行了必须的初始进程以后,启动代码才在某个时刻调用_wMain,现在来说,IDA可以识别出大部分的Main函数,但是,程序的执行可能不是从WInMain开始的,启动代码可能有一个对理解算法至关重要的操作。因此,浏览

2013-05-30 16:36:55 1116

原创 COM进程外组件的实现vc++

说明进程外组件的实现有三个部分组成分别是:进程外组件:com_test->simple(接口)代理存根  :com_proxy客户端    :com_client开发环境:WIN7+VS2010(一) 创建进程外组件使用VS2010创建ATL项目,项目名称是com_test,点击确定之后需要注意的是选择可执行程序,而不是dll!,其他保持默认,之后类似进程内组件,添加一

2013-05-30 10:27:05 4255 1

翻译 C++使用igraph 3.2 创建你的第一个graph

调用生成graph对象函数的叫做图表生成器,随机图表生成器被称为"games"。       igraph既可以处理有向图也可以处理无向图,大多数的图表生成器可以生成上述的两种图表,当然多数其他的函数通常也能处理这两种图表。 计算出从一个顶点到另一个顶点的最短路径函数igraph_shortest_paths()可以适用的不仅有有向图还有无向图。       igraph拥可以以不同的

2013-05-29 21:57:59 4053

原创 内置函数的反汇编解读

#includeusing namespace std;int max(int a,int b){ if(a>b) return a; else return b;}int _tmain(int argc, _TCHAR* argv[]){ int a,b; cin>>a; cin>>b; cout>a; cin>>b; cout>a; cin>>b; c

2013-05-29 20:37:16 662

原创 生成COM存根代理对象-进程透明性

不管是进程内组件还是进程外组件,客户程序可以使用一致的方法创建COM对象。对于进程内组件还是进程外组件,无论是创建过程,还是客户程序对接口的调用,我们都可以按照一般的同一进程内部函数调用的过程来理解,组件个客户之间的交互过程。但是实际情况是对于进程内组件函数的调用要比进程外组件函数的调用要复杂得多。     而存根代理对象则只是用于进程该组件,由于客户程序和对象在不同的进程空间内部,所以所

2013-05-29 20:01:07 1884

翻译 C++使用igraph 3.1 使用igraph编译程序

#include "stdio.h"#include "include\igraph.h"#pragma comment(lib,"igraph.lib")int main() { igraph_integer_t diameter; igraph_t graph; igraph_erdos_renyi_game(&graph,IGRAPH_ERDOS_RENYI_GNP,1000,

2013-05-28 22:00:33 4168

原创 函数的多个返回标志

.text:00401000 ; int __cdecl wmain(int argc, wchar_t **argv).text:00401000 _wmain proc near ; CODE XREF: __tmainCRTStartup+11Dp.text:00401000.text:00401000 m =

2013-05-28 21:07:57 870

原创 函数的开始和结束标志

.text:00401010 ; void *__thiscall CtmpApp___vector deleting destructor_(CtmpApp *this, unsigned int).text:00401010 ??_ECtmpApp@@UAEPAXI@Z proc near ; DATA XREF: .rdata:004034D8o.text:0040101

2013-05-28 20:39:22 3848

原创 COM 对象聚合

无论是对象聚合或是对象包容,其作用都是组件的复用,使用环境是这样的,有组件some对象和other对象,我们暴露出来的是some对象,现在需求改变了,some要加入新的功能,而该功能已经被other组件对象实现,而且完全不需要修改,在这种情况下,使用对象聚合,即,首先获得Isome的接口,使用其功能,在Isome接口中使用QueryInterface函数,获得Iother接口,进而复用其功

2013-05-28 17:00:01 1220

原创 COM对象包容

说到对象包容不可不提的便是对象聚合,其用意都是代码的可重用性的一种方式,刚刚看完了对象包容,所以在这儿写下自己的理解,其适用场所是,当有对象A实现了someinterface接口的功能,对象B实现了otherinterface接口的功能,当需求改变时,要求,B实现一种新的功能,但是该功能在A中已经实现,所以此时要实现代码的可重用性,对象B的新功能调用对象A的功能函数,而不再自己重新实现,当

2013-05-27 19:51:04 782

转载 C++反汇编代码分析--函数调用

代码如下:    #include "stdlib.h"    int sum(int a,int b,int m,int n)    {         return a+b;    }    void main()    {         int result = sum(1,2,3,4);         system("pause");

2013-05-27 10:50:26 643

原创 跟据函数指针调用函数的反汇编

不说废话,上来高级语言C++的源代码int _tmain(int argc, _TCHAR* argv[]){ int a[3]={(int)test,(int)test1,(int)test2}; for(int i=0;i<3;i++) { int (*f)(); f=(int(*)())a[i]; f(); }}反汇编之后如下:.text:0

2013-05-27 10:35:13 959

原创 内联函数并非由自己制定的环境 WIN7+VS2010

先记录下题外话:CALL指令将紧接在他之后的指令压入堆栈的顶部,但是esp的值并不发生变化,等待该过程执行完毕之后,执行RET指令,将程序的控制权还给之前压入堆栈的call之后的第一条指令的地址。结束函数的执行。例外的是并不是多有的RET指令都表示函数的结束,同时有一点要记得,函数可能并非只有一个出口点。对不?好了进入正题:C++代码如下#includeusing names

2013-05-25 11:19:15 797

原创 关于cout<<1; cout<<endl;和cout<<1<<endl;的解析

C++源代码如下cout经IDA反汇编之后得出.text:00401000 mov eax, ds:__imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z ; std::endl(std::basic_ostream> &) ;//将endl

2013-05-25 10:44:21 6703

原创 HIEW下破解自己的if(psw==input_psw)//整型比较

原函数如下:#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){int psw=10010;int input_psw;coutcin>>input_psw;if(psw==input_psw){cout}else{cout}return 0;

2013-05-24 21:07:18 972

原创 C语言的字符串比较与汇编的对照

字符串比较的解读由C->汇编 if(strcmp(input_word,password)==0) { cout<<"graduations!\n"; } else { cout<<"sorry\n"; }在此过程中eax放置的是password的偏移量,即password的地址,esi则是输入的字符串的地址级input_word的地址.text:00401061

2013-05-23 16:29:26 1074

原创 逆向工程-第一次修改.exe

入门参考资料-《黑客反汇编揭秘》,实验环境WIN7+VS2010,源代码#include "stdafx.h"#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){#pragma data_seg("knpc") char* password="dsadasd";#pragma data_seg() c

2013-05-23 10:06:40 2168

原创 在ATL接口中添加自定义函数

一般而言,我们会在dll接口,即使想要在内部实现某些更小模块也只消在继承该机口的类中添加功能函数,但是仅仅这样,该功能函数是不能暴露给外部使用的,其作用域只在类的内部,所以怎样才能给接口添加自定义函数,同时暴露出来呢?       这就要说到idl了,即interface description language,接口描述语言。     [ object, uuid(D01D924

2013-05-21 16:45:46 1916

原创 stgOpenStorage读取word文档

别的先不说,直接上代码::OleInitialize (NULL); // TODO: 在此添加控件通知处理程序代码 IStorage* pStorage=NULL; IStream* pStream=NULL; //检测是否是复合文档 HRESULT hResult=::StgIsStorageFile(TEXT("D:\\思想_1.doc")); if(FAILED(hResu

2013-05-16 21:50:53 3685

reactor模式源码

c++高并发模式的reactor模式,其主要作用就是在接收信息之后在线程池中进行选择空闲线程进行处理

2015-09-16

查询文件所在的进程

查询系统中所有打开的文件,并根据文件名称查询进程ID

2014-05-30

多文件加密

其实就是很简单的把要加密的文件放在一个exe文件当中保存起来,当我们需要使用的时候,将其取出来放在我们制定的位置即可

2014-05-19

PE文件捆绑工程源码下载

将要绑定的exe文件作为单纯的数据放在目标exe文件的新区快当中,目标文件在执行时检测是否有该区块,有,则创建新文件并创建进程,执行完毕后删除新建文件

2013-12-16

汇编实现的计算器

适合初学者学习,win32下汇编计算器,只是简单的整数操作哈,高手飘过即可

2013-11-01

软件加壳源代码

PE文件检测,输入表内容获取和转储,以及重建shellcode写入新区段,获得LoadLibrary,GetProcAddress地址

2013-09-09

mfc实现下载的不完全控制

可以实现下载进度条,下载暂停,下载继续,下载停止

2013-07-18

空空如也

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

TA关注的人

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