⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 菜鸟破解从头学(全教程).txt

📁 菜鸟破解从头学(全教程)
💻 TXT
📖 第 1 页 / 共 5 页
字号:
JE 或JZ 若相等则跳 


JNE或JNZ 若不相等则跳 


JMP 无条件跳 


JB 若小于则跳 


JA 若大于则跳 


JG 若大于则跳 


JGE 若大于等于则跳 


JL 若小于则跳 


JLE 若小于等于则跳 


总的来说,以上几个,都是比较常见的,需要掌握,但需要掌握的绝不止这几个,其它的指令希望你能在私下里再了解一下,可以找相应的教程来看。 


刚才忘了,现在再把数制转换也给贴上: 


首先说二进制转换为十进制的问题: 


各位二进制数码乘以与其对应的权之和即为该二进制相对应的十进制数。例如: 


10100=2的4次方+2的2次方,也就是十进制数20。 


11000=2的4次方+2的3次方,也就是十进制数24。 


接着说一下十进制数转换为二进制数的方法: 


这样的方法到底有多少,我也不清楚,我只讲最简单的一个-除法: 


把要转换的十进制数的整数部分不断除以2,并记下余数,直到商为0为止。 


例:N=34D(说明一下,你可能在某些数字的后边看到过加有一个字母,这个字母便是用来表示数制的,十进制数用D,二进制数用B,八进制数用O,十六进制数用H) 


  34/2=17     (a0=0) 


  17/2=8      (a1=1) 


  8/2=4       (a2=0) 


  4/2=2       (a3=0) 


  2/2=1       (a4=0) 


  1/2=0       (a5=1) 


所以N=34D=100010B。 


对于被转换的十进制数的小数部分则应不断乘以2,并记下其整数部分,直到结果的小数部分为0为止。 


十六进制数与二进制数、十进制数之间的转换: 


总的来说,十六进制数与二进数之间的转换,应该算是很简单的了,你只需把与之相对应的数值进行转换就成了。 


十六进制数的基数是16,共有16个数码,它们是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A表示十进制中的10,其余类推。它们与二进制和十进制数的关系如下: 


0H=0D=0000B,1H=1D=0001B,2H=2D=0010B,3H=3D=0011B,4H=4D=0100B,5H=5D=0101B,6H=6D=0110B,7H=7D=0111B,8H=8D=1000B,9H=9D=1001B,AH=10D=1010B,BH=11D=1011B,CH=12D=1100B,DH=13D=1101B,EH=14D=1110B,FH=15D=1111B 


所以,二进制与十六进制之间要进行转换的话,只要把它们由低到高每四位组成一级,直接用十六进制来表示就可以了: 


例:   1000      1010      0011       0101 


       8         A         3          5 


十六进制转二进制则用只需将每一位用四位二进制数来表示就成了: 


例:     A         B         1          0 


     1010      1011       0001       0000 


最后是十六进制数与十进制数之间的互相转换 


十六进制数转十进制数 


各位十六进制数与其对应权值的乘积之和即为与此十六进制数相对应的十进制数。 


例:N=BF3CH 


   =11*16的3次方+15*16的2次方+3*16的1次方+12*16的0次方 


   =11*4096+15*256+3*16+12*1 


   =48956D 


十进制转十六进制 


我还是只讲最简单的除法: 


把要转换的十进制数的整数值部分不断除以16,并记下余数,直到商为0为止。 


例N=48956D 


   48956/16=3059       (a0=12) 


   3059/16=191         (a1=3) 


   191/16=11           (a2=15) 


   11/16=0             (a3=11) 


所以N=48956D=BF3CH。 


通过以上的介绍,我不知道你到底看懂没有,如果有的话,请你去看一下书本,把我没讲到的地方和讲过了的地方都仔细地看几遍。如果你根本就没有看懂,那么你就更需要去看书了,不要因为这就丧失掉学习的信心。你认真地把前边儿的CPU介绍看完,弄清楚寄存器的概念,再把后边汇编指令拿下,就可以上路了。你认真学,认真背的话,会发现其实并没你想像中的那么难。一星期的时间,就可大概掌握了,但只是掌握而已,最起码可以看懂汇编代码了。要真想学好的话,就连后边儿的也一同看了吧,再写一些小程序来练练手。当然想精通汇编,那可不是一天两天一月两月的事,但你只要有恒心,有什么搞不定的?CPU也是人做的,指令只是其中的一部分而已,人家能做出CPU,你还怕连使用都学不会? 




课后FAQ 


Q:我以前学过8086/8088,并且也在DOS下写过程序,能行吗? 


A:绝对能行,相对8086/8088,现在的CPU在基本指令方面,也没有添加多少新的指令。你只需了解一下各寄存器的变化以及补充一下Windows程序的知识就成了。而且,既然你用汇编在DOS下写过程序,那么对Debug等调试器,肯定已经很上手了,所以你有先天的优势。 


Q:汇编对我来说不成问题,可我为什么总是不上手呢? 


A:呵呵,这样的老鸟倒还有不少,他们把汇编用的相当熟练,但是,只是因为经验的原因,所以才觉的不上手的,许多人当初不也都这样吗?最起码我就是,见了CALL就跟进,呵呵,倒跟了不少API,所以对于这部分高手,你只需多练练手以及掌握一些分析的技巧就成了。 


Q:我没学过编程,能学汇编吗? 


A:总的来说,也行。不过希望汇编的学习,不会使你丢掉学习其它高级语言的信心。:) 




答网友问 


Q:寄存器可以随便用么,有没有什么限制?写个程序的时候那些变量什么的可以放在任意的寄存器么? 


A:呵呵,我现在就来回答楼上朋友的问题。 


寄存器有它的使用机制,及各个寄存器都有着明确的分工。 


如小翠儿  如数据寄存器(EAX-EDX),它们都是通用寄存器,及在软件中,任何数据都可存放于此。但是除此之外,它们又可以都可以用于各自的专用目的。 


例如: 


EAX可以作为累加器来使用,所以它是算术运算的主要寄存器。在乘除法等指令中指定用来存放操作数。比如在乘法中,你可以用AL或AX或EAX来装被乘数,而AX或DX:AX或EAX或EDX:EAX则用来装最后的积。 


EBX一般在计算存储器地址时,它经常用作基址寄存器。 


ECX则常用来保存计数值,如在移位指令它用来装位移量、循环和串处理指令中作隐含的计数器。 


最后就剩下四大天王中的黎明了,近一段时间来,他总是比较低调...(你别打我了,我去撞墙好了)最后就剩下EDX了,一般在作双字长运算时把DX和AX组在一起存放一个双字长数(你还记的什么是双字长吧,举个例子,比如说有一个数二进制数据01101000110101000100100111010001,你要把它寄存起来,就可以把0110100011010100(即高十六位)放在DX中,把0100100111010001(即低十六位)放在AX中,这个数表示为DX:AX)当然完全可以用一个EDX就把这个数给装下。所以,还可以用EDX:EAX来装一个64位数据,这个你会推断出来吧。 


而ESP、EBP、EDI、ESI,我上边儿以经大概介绍的差不多了,所以这里不说它们了。 


当然还有其它的一些限制,因为我们只是要看程序的汇编代码(人家写好了的,肯定不会犯错误吧),而不是要去写,所以可以不必掌握。有性趣的话,去看相关书籍。 


另外再说一下你的最后一个问题“写个程序的时候那些变量什么的可以放在任意的寄存器么? ”这句话我不明白你要问的是什么。我想你可能是把一些关点给搞错了,变量这词通常都是出现在高级语言中的,而你用高级语言写程序的话,完全不用理解那些寄存器什么的,这些都跟高级语言没什么关系。但是最终,高级语言也还是把你写的程序转换为对寄存器、内部存储器的操作。 


<本章完>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 
第三章—Windows程序 


这一章我都不知道该如何写了,呵呵~~ 


毕竟,Win32是一个非常深奥的系统,目前还容不得我这种小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以,我也犯不着怕被人背后指着骂  本章的名字就叫《Windows程序》而不是《Windows程序设计》所以,我只是讲一些关于Windows程序运作的原理: 


Windows为什么叫Windows,相信所有用过的朋友都可以明白,那桌面上一个一个的窗口,就是它名字的由来。也就是这一个又一个窗口的出现,使计算机的使用一下子简单了巨多。几年前接触过电脑的朋友一定知道DOS吧,不知道的话,去问加解密工具下载版的版主老哥,让他跟你解释  你还记的DOS下那黑乎乎的窗口吧,没见过的哥们儿可以在开始菜单中找出来看看。DOS通过一系列的命令来进行相应的操作,如进入一个目录,删除一个目录等等等等。那种工作方式就叫做命令提示符方式,也即命令行。 


现在国内不懂电脑的人还老爱说要想学电脑,必须要英语过关。(就是这个,吓跑了多少仅仅是想学习一些基本操作的朋友)可能也就是源自DOS的原因吧。 


后来,随着硬件的支持以及技术上的提高,当然还有为了使电脑更方便的服务与人,慢慢的就有了所谓的视图操作系统,从此,你不用再记忆那些大堆的指令了,而且操作上,也有了相大的提高,可以说操作系统发展到今天的份儿上,操作已经够简单了,去看看那些在网吧里一把鼻涕的小孩子们吧… 


当然,就像当年DOS之于命令提示行一样,今天的Windows仍和当年一样,占据着大部分的用户群。 


(场外:一观众扔来一烂柿饼,你是唐僧啊,这么多废话) 


马上转入正题,Windows之所以好用,除了不用背N多的命令外,一个原因就是因为它本身提供了大量的标准Windows GUI函数。所以对于用户,面对的是同一套标准的窗口,对这些窗口的操作都是一样的,所以使用不同的应用程序时无须重新学习操作。不用像当年在DOS下面那样一安装新程序,就要马上看帮助,看说明。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -