123456

 
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 39 下一页

2012年5月11日

C++的虚函数表

摘要: 最近在看COM的聚合问题,发现一篇好文:http://www.cppblog.com/xczhang/archive/2008/01/20/41508.html,自己结合OD学习下吧,加深印象先贴代码:#include using namespace std;//#include class Base{public: virtual void f() { cout/$ A1 3C204000 mov eax, dword ptr []00401095 |? 8B0D 5C204000 mov ecx, dword ptr [] ; MSVC... 阅读全文

posted @ 2012-05-11 19:25 hgy413 阅读(183) 评论(0) 推荐(0) 编辑

2012年5月10日

C++虚函数调用的反汇编解析

摘要: 转自:http://blog.csdn.net/apemancsdn/article/details/82606虚函数的调用如何能实现其“虚”?作为C++多态的表现手段,估计很多人对其实现机制感兴趣。大约一般的教科书就说到这个C++强大机制的时候,就是教大家怎么用,何时用,而不会去探究一下这个虚函数的真正实现细节。(当然,因为不同的编译器厂家,可能对虚函数有自己的实现,呵呵,这就算是虚函数对于编译器的“多态”了:)。 作为编译型语言,C++编译的最后结果就是一堆汇编指令了(这里不同于.NET的CLR)。今天,我就来揭开它的神秘面纱,从汇编的层面来看看虚函数到底怎么实现的。让大家对虚函数的实现不 阅读全文

posted @ 2012-05-10 19:36 hgy413 阅读(259) 评论(0) 推荐(0) 编辑

COM实现聚合所使用的C++技巧

摘要: 转自:http://blog.csdn.net/apemancsdn/article/details/88193COM聚合作为COM实现接口复用的一种手段, 在进行多接口转发的时候是一种有效而快速的方法; 不过要在转发之后保证接口函数的语意保持一致, 必须使用一些特定的技巧, 下面的代码就演示了COM在实现聚合时所使用的技巧:class Base{public: virtual void Output() { printf("Base::Output/n"); }};class BaseEx{public: virtual void Print() { printf(&qu 阅读全文

posted @ 2012-05-10 19:35 hgy413 阅读(170) 评论(0) 推荐(0) 编辑

2012年5月9日

Windbg命令学习1(vertarget和lm和lmvm)

摘要: 1.g可以让目标程序继续执行,ctrl+break可以挂起正在运行的目标程序回到调试模式2.vertargetvertarget 命令显示目标机的Microsoft Windows操作系统版本给个示例:0:011> vertargetWindows XP Version 2600 (Service Pack 3) MP (4 procs) Free x86 compatibleProduct: WinNt, suite: SingleUserTSkernel32.dll version: Machine Name:Debug session time: Wed May 9 16:33:3 阅读全文

posted @ 2012-05-09 21:42 hgy413 阅读(2881) 评论(0) 推荐(0) 编辑

2012年5月6日

5月学习计划

摘要: 1.学习COM,掌握基础2.继续巩固汇编,对win32汇编了解进一步加深3.平均每天抽一小时学习cocoa,4.主要目标是能把windbg掌握。5.7:看完COM深入内幕前四章,代码重新写过,5.8看完COM深入内幕5-7章,代码重新写过,5.9看完COM深入内幕8-9章,代码重新写过,开始windbg命令小结,继续X86汇编温习.5.10重写了COM的聚合,继续windbg命令小结、5.11继续X86汇编温习.用OD反编译C++虚函数表的具体过程,写博客5.12温习了windows核心编程1-6章,也不知道看了多少遍了,每次都有新的体会5.13把X86汇编一个数据表完成了,继续windbg命 阅读全文

posted @ 2012-05-06 18:46 hgy413 阅读(117) 评论(0) 推荐(0) 编辑

2012年4月21日

win32汇编

摘要: 1.leave:mov esp,ebppop ebp其实我们应该要注意到pop ebp时,esp也加了4.2MOVZX 指令格式: MOVZX OPD,OPS----功能: 总是高位0扩展注意点:不要再写成bTest1 byte 12hmovzx ax, word ptr bTest1 (位数相同,所以没必要扩展?)也也就是不要再做强制转换了,否则报错,应该写成movzx ax, bTest1而且我发现写成movzx al,bTest1(位数相同,所以没必要扩展?)也报错,估计意思就是只有在需要扩展时才能用这个,MOVSX同样有这问题.3.条件测试语句只是简单的把每个表达式翻译成cmp或t.. 阅读全文

posted @ 2012-04-21 20:40 hgy413 阅读(167) 评论(0) 推荐(0) 编辑

4月学习计划

摘要: 学习win32汇编,巩固8086汇编,4月小结:一个月下来,算是喜欢上了OllyDbg,汇编还是很有乐趣的,windbg的确相对来说太难掌握了,慢慢来,最近有点心浮气躁了。 阅读全文

posted @ 2012-04-21 12:16 hgy413 阅读(107) 评论(0) 推荐(0) 编辑

2012年4月20日

vs2008搭一个asm汇编模板

摘要: 1.把lrvine文件夹放在Microsoft Visual Studio 9.0的安装目录下.我的是D:\Program Files\Microsoft Visual Studio 9.0\Irvine2.打开Microsoft Visual Studio 9.0\VC\vcprojects 目录,加入ASM Project.ico和ASM Project.vsz,使用记事本打开vc.vsdir 文件,在文件末尾添加以下内容:ASM Project.vsz|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|#1906|30|#1907|{1B027A40-8F43 阅读全文

posted @ 2012-04-20 17:09 hgy413 阅读(197) 评论(0) 推荐(0) 编辑

GDT和LDT

摘要: 先谈下个人理解:如果TI为0时,当然可以直接从GDT中找到段的基地址。如果TI不为0时,我们要先结合LDTR通过GDT来定位LDT,再通过给定的段选择子前13位在LDT中定位.所以,以XXXX:yyyyyyyy格式表示一个虚拟地址来分析:如果XXXX的TI位为0,则1.GDTR定位到GDT2.取XXXX的高13位当作位置索引得到段描述符3.段描绘符中包含段的基址,限长,优先级等属性,基址+yyyyyyy得到线性地址如果XXXX的TI位为1,则1..GDTR定位到GDT2.LDTR中获得LDT所在段在GDT中位置索引n3.通过n取得LDT段的位置4.取XXXX的高13位当作位置索引在LDT段中得 阅读全文

posted @ 2012-04-20 12:20 hgy413 阅读(200) 评论(0) 推荐(0) 编辑

2012年4月17日

WinDbg !locks 不可用的问题

摘要: 一个很有用的调试线程死锁的命令!locks在windbg最新的版本6.11.1.40X(X为任意数字)不可用了,运行!locks会提示下面错误:0:001>!locksNTSDEXTS:Unabletoresolventdll!RTL_CRITICAL_SECTION_DEBUGtypeNTSDEXTS:Pleasecheckyoursymbols解决方案是回退到版本6.10.3.233,下载地址:http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.10.3.233.msi安装上面版本,或者简单替换C:\Progr 阅读全文

posted @ 2012-04-17 11:13 hgy413 阅读(395) 评论(0) 推荐(0) 编辑

上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 39 下一页

导航