教你自己制作外挂!·程序!可以进来看看

社区服务
高级搜索
猴岛论坛DNF地下城与勇士教你自己制作外挂!·程序!可以进来看看
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
3个回复

教你自己制作外挂!·程序!可以进来看看

楼层直达
nvhaiyung

ZxID:2123285

等级: 上尉
举报 只看楼主 使用道具 楼主   发表于: 2009-03-30 0
一.汇编

1.进制转换及计算

计算机内采用的是二进制数值或编码,而在各种反汇编工具中最常用的显示方式是十六进制,而通常的数据为十进制,所以我们有必要了解一下各进制简单的转换及计算

1.1.1 进制

常用的进制有十六进制(符号为H),十进制(符号为D),二进制(符号为B),八进制(符号为Q).
十六进制顾名思义就是逢十六进一,十进制逢十进一,二进制逢二进一,八进制逢八进一
十六进制数是从1-F,10以上用字母A-F表示,正好是10 11 12 13 14 15

1.1.2进制转换的方法
任意进制转十进制方法:换权展开求累加之和。。
例:(101101)B=?D  这道题是二进制转十进制,按权展开后就是1*2的5次方加上1*2的3次方加上1*2的平方,再加上1*2的0次方所得的结果是(101101)B=32+8+4+1=45D
      6CH=?D    十六进制转十进制,依公式按权展开所得6*16的一次方,加上C*16的0次方,结果就是6CH=96+12=108
      6C.4H=?D  这个同上题相比多了个小数4..整数位就是108,小数位就是4*16的负一次方,结果是6C.4H=108+0.25=108.25
上面二道是二进制转十六进制的方法,按权展开求加累之和。。下面说下十进制转二进制与十六进制的方法。
十进制转二进制,十六进制采用的是除2取余法跟除16取余法
例:123=?H,把123除以16取它的余数,它的余数就是11 7..读的时候从下往上读,7 11, 11相对的十六进制数是B,所以最终结果是123=7BH
      123=?B,同理123除以2取它的余数,1101111。。。从下往上读就是1111011,123=1111011B

还有一种快速转换的方法就是十进制数转为十六进制数只要拆成16的倍数之和。。再用十六进制数的每一位转成二进制数,因为一位十六进制数等于四位二进制数,算下就知道了。1111B=1*2的3次方+1*2的2次方+1*2的1次方+1*2的0次方=15(F)。。
例:260=?H=?B
260=256+4=16*16*1+4=100H+4H=104H
104H=?B 按每一位十六进制换算成四位二进制来算,1就是0001,0是0000,4是0100,结果是=100000100B

很方便吧,要想快速转换只要记住2的平方以及16的平方数。。。



  顺便提一下什么是编码,字编码有这么几种,GB2312码(国际内码)UCS(国际标准码),前一种是占二个字节,后一种是占四个字节。。
ASCII码(美国标准码),它是7位的编码。代表了26个大小写字母,0-1阿拉伯数字,32个符号,33个控制代码加上一个空格,一共128个代码。
ANSI码,是8位的编码,由于计算机以字节为单位,一个字节等8位可以存放256个编码,所以在ASCII码128个代码基础上又增加了128个附加字符。
最后一种是UNICODE码,也叫宽字符,它跟ANSI码一样都是基于ASCII码,与ANSI码区别在于是用二个字节来进行编码。。
例如字符串:pig 所对应的十六进制ASCII码是70H 69H 67H  而UNICODE码就是0070H 0069H 0067H

马溜囝要散步

ZxID:4833265

等级: 准尉
举报 只看该作者 地板   发表于: 2009-03-30 0
-LZ......我已经54喇.....本人太笨..... 我是来刷刀的....
nvhaiyung

ZxID:2123285

等级: 上尉
举报 只看该作者 板凳   发表于: 2009-03-30 0
看不懂的可以无视!
nvhaiyung

ZxID:2123285

等级: 上尉
举报 只看该作者 沙发   发表于: 2009-03-30 0
二 寻址方式(这个比较重要,不懂寻址方式汇编就无处可谈)

2.1  寄存器

说寻址方式前先说下寄存器。。。CPU的寄存器分为二大类寄存器,一种是通用寄存器,一种是段寄存器。。。寄存器按位数可以分为8位的寄存器,16位寄存器,32位寄存器。AX就是16位累加寄存器,相对的32位寄存器就是EAX。。而16位的寄存器下面又可以分为二个AH与AL的8位寄存器。这里又要提到一个非常重要的原则,高高低低原则,例如:一个物理地址113450,他在内存里是113450=52H,113451=22H,113451是高位113450是低位。。。113450对应的值就是113450=2252H。。

2.1.1  16位通用寄存器

  通用寄存器可以分为通用数据寄存器,通用地址寄存器二大类。。。
  通用数据寄存器有AX,BX,CX,DX。。
AX是最常用的寄存器,也叫累加器,主要是做一些乘除运算,BCD运算,换码,串操作,中断调用
BX基址寄存器,放的是一些地址和基址。。它默认相对的是DS(数据段)。。。切记。
CX计数器,这个寄存器比较少用,主要用于循环计数,串操作计数等。。
DX数据寄存器,与AX差不多。。。主要用于16位乘除,中断调用等。

  通用地址寄存器也是有四个,BP,SP,SI,DI。
BP是基址指针,放的是地址跟基址。。(它相对的是SS(堆栈段),在反汇编里操作指令中的操作数除非有段超越ES:或CS:,否则除了BP外相对的都是DS(数据段))
SP是堆栈指针,存放栈顶地址。
SI源变址寄存器,存放变址和串操作源变址
DI目的变址寄存器,存放的是变址和串目的变址
« 返回列表
发帖 回复