《找程序关键点》word版

《找程序关键点》word版

ID:22708832

大小:49.01 KB

页数:11页

时间:2018-10-31

《找程序关键点》word版_第1页
《找程序关键点》word版_第2页
《找程序关键点》word版_第3页
《找程序关键点》word版_第4页
《找程序关键点》word版_第5页
资源描述:

《《找程序关键点》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、前言:写这篇文章出于个人兴趣,要先声明的是本人能力是非常有限!其中参考了许多文章!由于无法提供更多的信息教程,所以文章题目才叫做"给新手引路之浓缩汇编基础"。主要讲的是破解中所要的一些汇编知识,方便新手们理解,我将用比较通俗的语言讲述!希望大家别说我"低级"--b写此文的理由:1、出于兴趣2、助于自己学习巩固,利于新手注:本文并不教如何编写汇编程序,只想引新手们进Crack大门,一些迟迟无法Crack成功的人也就是这个原因了!最好是能抛砖引玉了,勾起新手们学习汇编的兴趣!重要一点是:不懂汇编是完全没办法搞Crack的,希望大家带着这点来学习!一、汇编基础------------

2、-----------------------------------------------------------------------------------1.0关于汇编语言汇编语言是创造出来代替原始的只能由处理器理解的二进制代码的,也就是在OD中常见的机器码!用机器码来写程序,可以想象其难度吧,所以汇编语言就出现了,汇编代码是直接描述处理器可以执行的代码,也就是在OD中最常见的反汇编代码了!(当然,有点不一样),而汇编语言是和cpu相关的,和机器语言是一一对应的!2.0关于cpuCPU的任务就是执行存放在存储器里的指令序列。为此,除要完成算术逻辑操作外,还需要担负C

3、PU和存储器以及I/O之间的数据传送任务。早期的CPU芯片只包括运算器和控制器两大部分。到了近几年,为了使存储器速度能更好地与运算器的速度相匹配,又在芯片中引入了高速缓冲存储器(知道为什么P4比P4赛扬贵那么多了吧?)。看主要的部件:1.算术逻辑部件ALU(arithmeticlogicunit)用来进行算术和逻辑运算。这部分与我们的关系不太大,我们没必要管它。2.控制逻辑。同样与我们的关系不大。3.工作寄存器。意识了吧,寄存器呀!喂,,寄存器呀!~3.0寄存器所要了解的是8个32位的寄存器,分别是eax,ebx,ecx,edx,esp,ebp,edi,esieax-edx这四

4、个是通用寄存器,虽然各个都有各自的用途,不过你可以用它们来做任何事!是32位的,自然有低位和高位,我们又可以通过ax,bx,cx,dx来访问其低十六位,但高十六位是无法访问的!比如eax=12345678h,那么低十六位ax=5678h!而十六位的自然也有低位和高位,不过高八位是可以访问的,如ax可以分为ah和al,看字面就知道,ah(high)高八位,al就为低八位了!前面的例子,ax=5678h,那么ah=56h,al=78h!这四个寄存器主要是用来暂放计算结果或什么什么的!esp-esi这四个主要是寻址时用来存放偏移或指针,所以,也就称为指针寄存器或变址寄存器了~如在OD

5、中看到的[eax],其实eax中存放的是一个内存地址,而实际要访问的是那个内存地址里的内容!esp(堆栈指针寄存器):很重要的一个概论,堆栈有着先进后出的特点,就好像有一个圆柱形的筒子,该直径刚好是一个乒乓球的直径,所以最先放进去的球当然会最后出来.而esp呢,永远是指着最顶的那个球的,也就是永远都指向栈顶!在od中也很常见了,比如push和pop就是对栈的操作,push把一个数据压入栈中,也就是把一个球放进去,再去调用push时就再放进一个,而esp则指向第二个放进去的那个球了!使用pop呢就从栈中弹出一个数据,前面说了,堆栈有着先进后出的特点,所以用pop呢就从最后放进去的

6、那个球先出了(除非你破坏筒子(破坏堆栈?那是不可能的,程序马上死给你看))!而esp还是指向栈顶!取个代码例子:(1)movecx,100<---------100传入ecx(2)moveax,200<---------200传入eax(3)pusheax<------------eax先进了(4)pushecx<-------------再来是ecx(5)popebx<--------------从栈顶取出一个,也是最后进去的那一个,结果存到ebx(6)popecx<--------------从栈顶取出一个,也就是刚刚先进去的那个了,结果存到ecx最后ebx=100,ecx

7、=200到了win32的平台下,api大家都知道了吧!api的参数都是靠堆栈来传递的,比如说一个FindWindow,在C里我这样调用->::FindWindow("a",0)->而反汇编之后在系统底层反汇编代码就象这个样子:pushxxxxxxxx->xxxxxxxx为"a"的内存地址pushyyyyyyyycallzzzzzzzz->调用FindWindow而在call里面先使用pop弹出先前压入栈的参数再使用ebp(基址指针寄存器):它称为基址指针寄存器,它们都可以与堆栈段寄存器SS(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。