1 函数指针指向函数地址的指针变量,声明方式如下:一般函数:void func(void);指向函数func(void)的指针:void (*pfunc)(void) = func;其中(*func)必须带有括号,否则编译器会认为是返回类型为void*的func(void)函数。 1 #includ...
分类:
其他好文 时间:
2015-07-01 13:47:19
阅读次数:
104
1 HMODULE hDll =LoadLibrary("DLL.dll"); 2 pfnTestRun FuncAddress= NULL; 3 FuncAddress=(pfnTestRun)GetProcAddress(hDll,"TestRun"); 4 FreeLibrary(hDll)....
分类:
其他好文 时间:
2015-06-25 19:01:38
阅读次数:
136
1、什么是符号表?符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的.dSYM文件。.dSYM文件其实是一个目录,在子目录中包含了一个16进制的保存函数地址映射信息的中转文件,所有Debug的symbols都在这个文件中(包括文件名、函数名、行号等),所以也称...
分类:
移动开发 时间:
2015-06-09 21:43:53
阅读次数:
207
这道很简单的溢出题,竟然花了我一天的时间来做,为什么?菜呗!一开始信心满满的打开逆向题一看,是一个驱动程序,什么鬼?顿时就想完了,没玩个这东西。还好系统安全里有一道溢出题。好了,不哔哔了,直接请出神器IDA看到了read_flag_file函数,记住函数地址是在400824再用强大的F5一看哦,原来...
分类:
其他好文 时间:
2015-06-07 11:03:45
阅读次数:
130
1 回调函数的概述 回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时,将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。这个函数就是调用者和被调用者之间的一种通知约定,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按...
先简单说下原理:hook,即野蛮地借用jmp等指令钩住目标函数,修改运行路径使其执行我们自己的代码。方法是在指定进程中的内存里找到目标函数的地址,然后修改其首地址的前几字节为jmp指令,指向我们自己的自定义函数地址。这样,进程执行这个函数的时候,会先执行我们自己的代码,之后可以选择性执行原函数或不执...
分类:
其他好文 时间:
2015-05-22 01:45:28
阅读次数:
174
有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。对于系统的oop消息、或者通过gdb的调试消息,都需要根据该对照表,将内核熟悉的函数地址转化为用户熟悉的函数名称,便于用户进行故障定位、运行监控。
system.map内容格式为:线性地址 类型 符号
符号类型.
小写字母表示局部; 大写字母表示全局(外部).
A
The symbol's ...
分类:
其他好文 时间:
2015-05-17 10:48:46
阅读次数:
138
C/C++中的指针可以指向一个函数,也叫函数指针。
注:函数返回值是指针的叫指针函数,中心词在后面,即函数指针其实质是一个指针,指针函数其实质是函数。还是以实例说话,下面的例子进行加减乘除运算。/*compute函数的第三个参数是一个指针函数,这里的calculate是一个变量,其存储的是函数地址,你可以将具有相同签名的函数名传递给calculate也是可以的*/
double compute(d...
分类:
其他好文 时间:
2015-05-15 15:32:37
阅读次数:
117
有虚函数的话就有虚表,虚表保存虚函数地址,一个地址占用的长度根据编译器不同有可能不同,vs里面是8个字节,在devc++里面是4个字节。类和结构体的对齐方式相同,有两条规则1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个...
分类:
其他好文 时间:
2015-05-10 23:54:16
阅读次数:
245
TLS是在线程创建后执行前,销毁后退出前自动执行的一种技术,常用于反调试技术。TLS主要有一个回调函数地址表,在PE文件中存在。一个程序放到调试器中,还没有加载到OEP时,就已经执行TLS了(因为程序的主线程在OEP前创建,而创建时会自动调用TLS,准确的说是创建后自动调用其回调函数TLS)。这时候往TLS中置入反调试检测,就达到了效果。...
分类:
其他好文 时间:
2015-05-10 09:51:33
阅读次数:
249