孤注一掷

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C++

摘要:在逆向C++目标时,我们有时候可能会关注一个V表中到底有多少个虚函数。这种细节大概多半是与编译器实现相关。为了弄清楚这个问题,我在VS2008下写了一个简单的测试程序来探求这个问题的答案。下面是C++的测试程序源码:class IBox {public: virtual void f1() = 0; virtual void f2() = 0; virtual void f3() = 0; virtual void f4() = 0;};class Box : public IBox {protected: int id;public: Box() { id = 0; } Box(int b. 阅读全文
posted @ 2013-01-06 22:54 孤注一掷 阅读(351) 评论(0) 推荐(0)

摘要:http://blog.csdn.net/haoel/article/details/1948051/ 阅读全文
posted @ 2013-01-06 22:13 孤注一掷 阅读(157) 评论(0) 推荐(0)

摘要:在使用WinDBG时,要加载调试符号则是使用的编译器生成的标准PDB调试库。而在OD中,有两类调试信息来源:1.PDB文件2.LIB文件其中,LIB文件在查找导入符号时,能够发挥重要的作用。下文将解释OD和VS2008使用LIB库的一些条件:1.简介例如众所周知的MFC库大量使用了DLL导出序号,因此在OD中查看这些导入信息时,都只能看到序号。为了增加可读性,可以在OD中使用 “选择导入库” 功能来加载LIB信息,这样就可以在名称表中看到DLL的原始导入名称了。在创建DLL工程时,程序员可以选择以序号输出导出函数。2.VC2008的编译设置在VC2008中,可以使用DEF文件来完成这项任务。其 阅读全文
posted @ 2012-10-17 11:00 孤注一掷 阅读(2693) 评论(0) 推荐(0)

摘要:看一个类在内存中的布局最直接的方法是使用OD之类的调试器,动态跟踪关于类成员的存取代码,但是该方法使用起来不是很方便,而且也有可能因为有的成员的访问代码不便跟踪。解决之道是:VC编译器(CL.EXE)提供了一个隐藏开关,用于打印编译器为类所确定的类Layout信息。该方法最好在命令行下使用,因为在IDE中编译会在每行头部输出额外的信息,这样会打乱原始输出。下面介绍使用技巧:首先写一个类(类文件分别为test.h和test.cpp):class Test {protected: int a; int b;public: Test(void); ~Test(void);};开关1:-d1repor 阅读全文
posted @ 2012-10-13 15:32 孤注一掷 阅读(501) 评论(0) 推荐(0)

摘要:最近在研究C++的逆向,为了了解VC编译器的代码生成规则,经常自己编写测试代码,然后使用VC编译,再通过Ollydbg来查看反汇编情况。但是,由于默认程序都是生成Debug版本,中间插入了一些未优化代码,尤其是堆栈检查指令CC,不但干扰我的分析调试过程,同时在实际的第三方程序调试过程中,也很少有Debug版本,所以我需要去掉这些信息。为什么不直接使用Release版本编译呢,这是因为默认的的Release优化是很可怕的,比如我写了一些简单的类和过程调用,都会被直接优化掉的,因此为了还原真实的程序意图和流程,我决定在Debug版本下自己控制编译选项,生成我需要的二进制码。本次测试的代码很简单,如 阅读全文
posted @ 2012-10-13 01:18 孤注一掷 阅读(1111) 评论(0) 推荐(0)

摘要:转自:http://www.cnblogs.com/Kane_zzt/archive/2009/02/04/1383797.html可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关。VC 编译命令开关/C: 在预处理输出中保留注释语句/c: 只编译,不连接,相当于在"Build"菜单下选择了"Compile"/D: 定义常量和宏,与源程序里的#define 有相同效果/E:预处理C、C++源文件,将源文件中所有的预编译指令及宏展开,将注释去掉,然后将预处理器的输出拷贝至标准输出设备 阅读全文
posted @ 2012-10-13 00:51 孤注一掷 阅读(296) 评论(0) 推荐(0)

摘要:原生Lua编译时未经过C++的Name Mangling,所以在C++工程中需要用extern "C"关键字来包含以下头文件:extern "C" {#include "Lua.h"#include "LuaLib.h"#include "LauxLib.h"} 阅读全文
posted @ 2012-09-29 09:55 孤注一掷 阅读(150) 评论(0) 推荐(0)