自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

W Blog

很久很久以前,天是蓝的,水是清的,Virus是跑在Ring3的,AV是只做扫描的

  • 博客(8)
  • 资源 (5)
  • 收藏
  • 关注

原创 Switch语句的实现机制(2)

 补充第三种,虽然我还是不很明白。。。=,=!(3)树型结构int main(){ int i=1; switch(i) { case 12:printf("%s","no1");break; case 21:printf("%s","no2");break; case 33:printf("%s","no3");break; case 4:printf("%s","no4");break; case 5:printf("%s","no5");break; case

2010-08-06 22:29:00 1741

原创 Switch语句的实现机制

<br />switch的底层实现机制根据switch需要判断的表达式的复杂性和不同编译器有所不同。一般情况下,switch有三种实现机制,分别是直接判断、跳转表和树型结构。编译器根据需要判断表达式的复杂性并采用相应的的实现方式。下面分别研究这三种switch机制<br /><br />(1)直接判断<br />int main(){ int i=1; switch(i) { case 1:printf("%s","no1");break; case 2:printf("%s","

2010-08-06 22:22:00 5417

原创 If条件分支语句的实现机制

<br />(1)<br />int main(){ int a=3,b=5; if (a<b) printf("%s","yes"); return 0;}<br />int a=3,b=5;00CE13BE mov dword ptr [a],3 00CE13C5 mov dword ptr [b],5 if (a<b) printf("%s","yes");00CE13CC mov eax,dword p

2010-08-06 22:11:00 2106

原创 结构体的实现机制

<br />在C语言中用结构体定义数据的顺序和它在内存中的数据布局是一致的。<br />#include <stdio.h>int main(){ int i; struct information { int cpu_num; char cpu_name[50]; unsigned long cpu_speed; int cpu_price; }Info[3]={ {1,"AMD 1.2G 1987",1200,120}, {2,"INT

2010-08-06 22:05:00 1501 1

原创 数组的实现机制

<br />分析个二维数组的程序<br />int main(){ int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int i,j; for (i=0;i<3;i++) for (j=0;j<4;j++) { a[i][j]*=2; printf("%d",a[i][j]); } return 0;}<br />反汇编代码如下:<br />int main(){00F913A0 pu

2010-08-06 21:50:00 2434

原创 字符串的实现机制

通常编译器编译一个引用字符串的指令是使用指针来实现的.字符”/0”表示字符转的结尾(这是C语言,Delphi是在字符串起始地址前添加了一个表示字符串实际长度的数值标值)char *a={“AAAA”};在内存中*a实际存放的数据是 41H 41H 41H 41H 00Hint main(){ char *a={"AAAA"}; char *b={"BBBB"}; printf("%s%s/n",a,b); return 0;}反汇编代码如下:int main(){01

2010-08-06 21:45:00 1105

原创 常量、指针和变量的实现机制

<br />无论是硬件设计还是软件设计,计算机领域都有一条设计法则-----那就是把不变化的和变化的东西分离出来,这样做的好处是稳定性提高了,而且方便维护。<br />按照一般的PE文件结构来说,常量存储在数据区块,变量存储在堆栈,一般程序的编译器也很乐意按照这种方式编译和生成PE文件。<br />在内存中,一般数据是从低地址往高地址存放,而在堆栈中数据是从内存高的地址往内存低的地址存放。<br />int a=3,*pa=&a;int main(){ int b=4; int *pb=&b

2010-08-06 21:39:00 1480

原创 调用约定的参数传递顺序

都是学习过程中做的笔记。在编程的过程中,函数是必不可少的基础之一。c语言的程序完全由函数构成,所有的代码都在某一个函数中;pascal区分函数和过程,但是本质是类似的。而对计算机硬件而言CPU只关心一条条的指令,而不是它们是什么样的结构组织。call和ret只是为了函数调用的方便而已,并不是函数存在的证据。最简单的例子就是在木马免杀过程中call+ret和jmp是等价的。因此一种高级语言如何实现函数调用并不受约束,故出现了不同的函数调用规则。在windows平台上常用的函数调用方式有pascal方式(pss

2010-08-06 21:31:00 1613

加壳引导程序

加壳引导程序

2012-03-03

加壳程序代码

一个加壳代码框架

2012-03-03

隐藏保护进程源码

一个通过HOOK SSDT来隐藏进程和保护进程的源码,值得菜鸟一看,很多可以拿来重用的东西

2011-10-18

脱壳的艺术--doc

脱壳是门艺术——脱壳既是一种心理挑战,同时也是逆向领域最为激动人心的智力游戏之一。为了甄别或解决非常难的反逆向技巧,逆向分析人员有时不得不了解操作系统的一些底层知识,聪明和耐心也是成功脱壳的关键。这个挑战既牵涉到壳的创建者,也牵涉到那些决心躲过这些保护的脱壳者。

2010-07-01

逆向c++,PDF格式

这些年来,逆向工程分析人员一直是凭借着汇编和 C 的知识对大多数软件进行逆向工程的,但是,现在随着越来越多的应用程序和恶意软件转而使用 C++语言进行开发,深入理解 C++ 面向对象方式开发的软件的反汇编技术就显得越发的必要。本文试图通过分析在反汇编时如何手工识别 C++对象,进而讨论如何自动完成这一分析过程最终介绍我们自己开发的自动化 工具,一步一步的帮助读者掌握逆向 C++程序的一些方法。

2009-10-05

空空如也

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

TA关注的人

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