破解 文档资料.docx

上传人:b****5 文档编号:12331600 上传时间:2023-04-18 格式:DOCX 页数:31 大小:31.25KB
下载 相关 举报
破解 文档资料.docx_第1页
第1页 / 共31页
破解 文档资料.docx_第2页
第2页 / 共31页
破解 文档资料.docx_第3页
第3页 / 共31页
破解 文档资料.docx_第4页
第4页 / 共31页
破解 文档资料.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

破解 文档资料.docx

《破解 文档资料.docx》由会员分享,可在线阅读,更多相关《破解 文档资料.docx(31页珍藏版)》请在冰豆网上搜索。

破解 文档资料.docx

破解文档资料

 

call:

调用子程序

ret:

返回主程序

je或jz:

若相等则跳转

jne或jnz:

若不相等则跳转

pushxx:

xx压栈

popxx:

xx出栈

再来复习一下,判断语句的意义。

cmpa,b  比较a与b

mova,b  把b的值送给a

ret  返回主程序

nop  无作用,英文“nooperation”的简写,意思是“donothing”(机器码90)

call  调用子程序

je或jz  若相等则跳(机器码74或0F84)

jne或jnz  若不相等则跳(机器码75或0F85)

jmp  无条件跳(机器码EB)

Jb  若小于则跳

ja  若大于则跳

jg  若大于则跳

jge  若大于等于则跳

jl  若小于则跳

jle  若小于等于则跳

pop  出栈

push  压栈

常见修改(机器码)

74=>7574=>9074=>EB

75=>7475=>9075=>EB

jnz->nop

75->90(相应的机器码修改)

jnz->jmp

75->EB(相应的机器码修改)

jnz->jz

75->74(正常)0F85->0F84

两种不同情况的不同修改方法

1.修改为jmp

je(jne,jz,jnz)=>jmp相应的机器码EB(出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息

出错信息,例如:

注册码不对,sorry,未注册版不能...,"FunctionNotAvaibleinDemo"或"CommandNotAvaible"或"Can'tsaveinShareware/Demo"等(我们希望把它跳过,不让它出现)

2.修改为nop

je(jne,jz,jnz)=>nop相应的机器码90(正确信息向上找到的第一个跳转)nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处

正确信息,例如:

注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)

出错信息(我们希望不要跳到这里,不让它出现)

爆破口诀

一条(跳)就死,九筒(90)就胡(对应上面的2.修改为nop)

一条(跳)就胡,一饼(EB)伺候(对应上面的1.修改为jmp)

妻死(74)变妻无(75)

爸死(84)变爸无(85)

高人总结的常见的存放注册码的地方。

常见断点设置(后面带"*"的为常用的)

字符串

bpGetDlgItemTextA(W)****

bpGetDlgItemInt

bpGetWindowTextA(W)****

bpGetWindowWord

bmsgXXXXwm_gettext

对话框

bpMessageBeep

bpMessageBoxA(W)****

bpMessageBoxExA(W)

bpDialogBoxParamA(W)

bpGreateWindowExA(W)

bpShowWindow

bpUpdateWindow

bmsgXXXXwm_command

对于VB的程序用bpMessageBoxA是无法断下来的,bprtcMsgBox

注册表相关

bpRegCreateKeyA(W)(生成一个key文件)

bpRegDeleteKeyA(W)(删除key文件)

bpRegQueryValueA(W)(队列)

bpRegCloseKey(关闭key文件)

bpRegOpenKeyA(W)****(打开key文件)

时间相关

bpGetLocalTime(本地时间)

bpGetFileTime(获取文件创建的时间)

bpGetSystemtime(获取机器的时间)

CD-ROM或磁盘相关

bpGetFileAttributesA(W)

bpGetFileSize

bpGetDriveType

bpGetLastError

bpReadFile

bpio-h(CD-ROM端口地址)R

软件狗

bpio-h278R

bpio-h378R

INI初始化文件相关

bpGetPrivateProfileStringA****

bpGetPrivateProfileInt

bpWritePrivateProfileString

bpWritePrivateProfileInt

文件访问相关

bpReadFile

bpWriteFile

bpCreateFileA****

bpSetFilePointer

bpGetSystemDirectory

VB程序专用断点:

bpxmsvbvm60!

rtcMsgBox

bpxmsvbvm60!

__vbaStrCmp

bpxmsvbvm60!

__vbaStrComp

bpxmsvbvm60!

__vbaStrCompVar

bpxmsvbvm60!

__vbaStrTextCmp

bpxmsvbvm60!

__vbaFileOpen

bpxmsvbvm60!

__vbaInputFile

bpxmsvbvm60!

__vbaFileSeek

bpxmsvbvm60!

__vbaWriteFile

bpxmsvbvm60!

__vbaFileClose

bpxmsvbvm60!

rtcFileAttributes

bpxmsvbvm60!

rtcFileDateTime

bpxmsvbvm60!

rtcFileLen

bpxmsvbvm60!

rtcFileLength

bpxmsvbvm60!

__vbaVarInt

bpxmsvbvm60!

__vbaVarCmpGe

bpxmsvbvm60!

__vbaVarCmpGt

bpxmsvbvm60!

__vbaVarCmpLe

bpxmsvbvm60!

__vbaVarCmpLt

bpxmsvbvm60!

__vbaVarCmpNe

bpxmsvbvm60!

__vbaVarTextCmpEq

bpxmsvbvm60!

__vbaVarTextCmpGe

bpxmsvbvm60!

__vbaVarTextCmpGt

bpxmsvbvm60!

__vbaVarTextCmpLe

bpxmsvbvm60!

__vbaVarTextCmpLt

bpxmsvbvm60!

__vbaVarTextCmpNe

bpxmsvbvm60!

__vbaVarTextTstEq

bpxmsvbvm60!

__vbaVarTextTstGe

bpxmsvbvm60!

__vbaVarTextTstGt

bpxmsvbvm60!

__vbaVarTextTstLe

bpxmsvbvm60!

__vbaVarTextTstLt

bpxmsvbvm60!

__vbaVarTextTstNe

bpxmsvbvm60!

__vbaVarTstEq

bpxmsvbvm60!

__vbaVarTstGe

bpxmsvbvm60!

__vbaVarTstGt

bpxmsvbvm60!

__vbaVarTstLe

bpxmsvbvm60!

__vbaVarTstLt

bpxmsvbvm60!

__vbaVarTstNe

注意:

VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数。

上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可。

F2:

设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。

(相当于SoftICE中的F9)

F8:

单步步过。

每按一次这个键执行一条反汇编窗口中的一条指令,遇到CALL等子程序不进入其代码。

(相当于SoftICE中的F10)

F7:

单步步入。

功能同单步步过(F8)类似,区别是遇到CALL等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。

(相当于SoftICE中的F8)

F4:

运行到选定位置。

作用就是直接运行到光标所在位置处暂停。

(相当于SoftICE中的F7)

F9:

运行。

按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

(相当于SoftICE中的F5)

CTR+F9:

执行到返回。

此命令在执行到一个ret(返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。

(相当于SoftICE中的F12)

ALT+F9:

执行到用户代码。

可用于从系统领空快速返回到我们调试的程序领空。

(相当于SoftICE中的F11)

 

Mov装入送入

mova,b;把b的值赋给a,使a=b

例如,moveax,010h表示,在eax中载入00000010h。

需要注意的是,如果你希望在寄存器中装入0,则有一种更快的方法

例如,xchgebx,ecx,则ebx与ecx的数值将被交换

递增或递减寄存器的值:

我们假定ax的值为8

increg(8,16,32)//incax

decreg(8,16,32)//decax

这两个指令往往用于循环中对指针的操作。

需要说明的是,某些时候我们有更好的方法来处理循环,例如使用loop指令,或rep前缀。

这些将在后面的章节中介绍。

将寄存器的数值与另一寄存器,或立即数的值相加,并存回此寄存器:

addreg32,reg32/imm(8,16,32)

addreg16,reg16/imm(8,16)

addreg8,reg8/imm(8)

例如,addeax,edx,将eax+edx的值存入eax。

减法指令和加法类似,只是将add换成subeax,edx。

Add########两数相加

Sub########两数相减

类似的指令还有and、or、xor(与,或,异或)等等。

它们进行的是逻辑运算。

我们称add、mov、sub、and等称为为指令助记符(这么叫是因为它比机器语言容易记忆,而起作用就是方便人记忆,某些资料中也称为指令、操作码、opcode[operationcode]等);后面的参数成为操作数,一个指令可以没有操作数,也可以有一两个操作数,通常有一个操作数的指令,这个操作数就是它的操作对象;而两个参数的指令,前一个操作数一般是保存操作结果的地方,而后一个是附加的参数

   CMPAX,BX//AX寄存器减去BX寄存器的内容

    ANDAX,BX//AX与BX做“与运算”

    ORAX,BX//AX与BX做“或运算”

    TESTAX,BX与ANDAX,BX命令有相同效果

    XORAX,AX使AX的内容清零,每个寄存器与自己作异或运算等于清零动作

算术运算

-------------------------------------------------------------

    ADDAX,BX 加法运算  AX=AX+BX

    SUBAX,BX 减法运算  AX=AX-BX

    INCAX   寄存器加一 AX=AX+1

    DECAX   寄存器减一 AX=AX-1

    MUL    乘法运算

    DIV/idiv    除法运算

-------------------------------------------------------------

数据操作

-------------------------------------------------------------

    MOVAX,BX数据传送指令,将BX的值移送到AX中

    XCHGAX,BX将AX与BX的值互换

8086/8088指令集

为了便于查询,这里分类列出8086/8088汇编指令:

数据传送指令

MOV

功能:

把源操作数送给目的操作数

语法:

MOV目的操作数,源操作数

格式:

MOVr1,r2或MOVr,m或MOVm,r或MOVr,data

XCHG

功能:

交换两个操作数的数据

语法:

XCHG

格式:

XCHGr1,r2或XCHGm,r或XCHGr,m

PUSH,POP

功能:

把操作数压入或取出堆栈

语法:

PUSH操作数POP操作数

格式:

PUSHr或PUSHM或PUSHdataPOPr或POPm

PUSHF,POPF,PUSHA,POPA//PUSHFDPOPFDPUSHADPOPAD

功能:

堆栈指令群

格式:

PUSHFPOPFPUSHAPOPA

LEA,LDS,LES

功能:

取地址至寄存器

语法:

LEAr,mLDSr,mLESr,m

XLAT(XLATB)

功能:

查表指令

语法:

XLATXLATm

算术运算指令

ADD,ADC

功能:

加法指令

语法:

ADDOP1,OP2ADCOP1,OP2

格式:

ADDr1,r2ADDr,mADDm,rADDr,data

影响标志:

C,P,A,Z,S,O

SUB,SBB

功能:

减法指令

语法:

SUBOP1,OP2SBBOP1,OP2

格式:

SUBr1,r2SUBr,mSUBm,rSUBr,dataSUBm,data

影响标志:

C,P,A,Z,S,O

INC,DEC

功能:

把OP的值加一或减一

语法:

INCOPDECOP

格式:

INCr/mDECr/m

影响标志:

P,A,Z,S,O

NEG

功能:

将OP的符号反相(取二进制补码)

语法:

NEGOP

格式:

NEGr/m

影响标志:

C,P,A,Z,S,O

MUL,IMUL

功能:

乘法指令

语法:

MULOPIMULOP

格式:

MULr/mIMULr/m

影响标志:

C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV

功能:

除法指令

语法:

DIVOPIDIVOP

格式:

DIVr/mIDIVr/m

CBW,CWD//changebyteword//changeworddword

功能:

有符号数扩展指令

格式:

CBWCWD

AAA,AAS,AAM,AAD

功能:

非压BCD码运算调整指令

格式:

AAAAASAAMAAD

影响标志:

A,C(AAA,AAS)S,Z,P(AAM,AAD)

DAA,DAS

功能:

压缩BCD码调整指令

格式:

DAADAS

影响标志:

C,P,A,Z,S

字符串操作指令

MOVSB,MOVSW,MOVSD

功能:

字符串传送指令

格式:

MOVSBMOVSWMOVSD

标志位:

CMPSB,CMPSW,CMPSD

功能:

字符串比较指令

格式:

CMPSBCMPSWCMPSD

标志位:

C,P,Z,S,O

SCASB,SCASW//scansb

功能:

字符串搜索指令

格式:

SCASBSCASW

标志位:

C,P,Z,S,O

LODSB,LODSW,STOSB,STOSW

功能:

字符串载入或存贮指令

格式:

LODSBLODSWSTOSBSTOSW

标志位:

REP,REPE,REPNE

功能:

重复前缀指令集

格式:

REP指令SREPE指令SREPNE指令S

标志位:

依指令S而定

位运算指令集

AND,OR,XOR,NOT,TEST

功能:

执行BIT与BIT之间的逻辑运算

格式:

ANDr/m,r/m/dataORr/m,r/m/dataXORr/m,r/m/dataTESTr/m,r/m/dataNOTr/m

影响标志:

C,O,P,Z,S(其中C与O两个标志会被设为0)NOT指令不影响任何标志位

SHR,SHL,SAR,SAL

功能:

移位指令

格式:

SHRr/m,data/CLSHLr/m,data/CLSARr/m,data/CLSALr/m,data/CL

影响标志:

C,P,Z,S,O

ROR,ROL,RCR,RCL

功能:

循环移位指令

格式:

RORr/m,data/CLROLr/m,data/CLRCRr/m,data/CLRCLr/m,data/CL

影响标志:

C,P,Z,S,O

程序流程控制指令

CLC,STC,CMC

功能:

设定进位标志

格式:

CLCSTCCMC

标志位:

C

CLD,STD

功能:

设定方向标志

格式:

CLDSTD

标志位:

D

CLI,STI

功能:

设定中断标志

格式:

CLISTI

标志位:

I

CMP

功能:

比较OP1与OP2的值

格式:

CMPr/m,r/m/data

标志位:

C,P,A,Z,O

JMP

功能:

跳往指定地址执行

格式:

JMP地址

JXX

功能:

当特定条件成立则跳往指定地址执行

格式:

JXX地址

XX为下列值:

  A:

ABOVE,当C=0,Z=0时成立

  B:

BELOW,当C=1时成立

  C:

CARRY,当CF=1时成立

  CXZ:

CX寄存器的值为0(ZERO)时成立

  E:

EQUAL,当Z=1时成立

  G:

GREATER(大于),当Z=0且S=0时成立

  L:

LESS(小于),当S不为零时成立

  N:

NOT(相反条件),需和其它符号配合使用

  O:

OVERFLOW,O=1时成立

  P:

PARITY,P=1时成立

  PE:

PARITYEVEN,P=1时成立

  PO:

PARITYODD,P=0时成立

  S:

SIGN,S=1时成立

  Z:

ZERO,Z=1时成立

LOOP

功能:

循环指令集

语法:

LOOP地址

LOOPE(Z)

格式:

LOOPNE(Z)地址

标志位:

CALL,RET

功能:

子程序调用,返回指令

语法:

CALL地址RETRETn

标志位:

INT,IRET

功能:

中断调用及返回指令

语法:

INTnIRET

标志位:

在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器

处理器状态控制指令

NOP

功能:

空操作指令。

不执行任何操作,但要花费CPU一个机器周期

格式:

NOP

HLT

功能:

暂停指令。

CPU不执行任何操作,一直处于暂停状态,但IP指向HLT的下一条指令。

格式:

HLT

脱离HLT状态的方式:

1、CPU复位;2、CPU响应中断

ESC,WAIT,LOCK

功能:

用于多处理器系统。

其中ESC是交权指令;WAIT是等待指令;LOCK是总线封锁指令

重启验证类软件大致的验证过程。

1、运行软件输入注册信息,点注册后。

一般软件会提示你重新运行软件,以便验证注册信息的正确性(如FlashGet);

也有的只在你输入正确的注册信息时才有这个提示,不然会告诉你输入的注册信息有问题(此软件就属这类)

2、要破解这种软件,首先是判断一下她把注册信息存在哪里(因为她重启验证时要用)。

大致有两种存放方式,第一种是放在注册表里;第二种是放在文件里。

(我们可以在输入注册信息,点击确定前,利用监视类软件来查看一下,如FileMon和RegShot等)

3、知道她的注册信息的存放地点后,就可以选则相应的API断点,来调试了

访问注册表类常用API

bpRegOpenKeyA打开一个现有的注册表项****

bpRegOpenKeyExA打开一个现有的注册表项****

bpRegCreateKeyA在指定的项下创建或打开一个项

bpRegCreateKeyExA在指定项下创建新项的更复杂的方式

bpRegDeleteKeyA删除现有项下方一个指定的子项

bpRegDeleteValueA删除指定项下方的一个值

bpRegQueryValueA获取一个项的设置值

bpRegQueryValueExA获取一个项的设置值

bpRegSetValueA设置指定项或子项的值

bpRegSetValueExA设置指定项的值

bpRegCloseKey关闭系统注册表中的一个项(或键)

访问文件类常用API

bpCreateFileA打开和创建文件、管道、邮槽、通信服务、设备以及控制台****

bpOpenFile这个函数能执行大量不同的文件操作

bpReadFile从文件中读出数据

bpReadFileEx与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调、

浮点运算:

fmul相乘

Fadd相加

Fstp保存

Fstswax清零

VB程序的常见函数

1)数据类型转换:

a)__vbaI2Str将一个字符串转为8位(1个字节)的数值形式(范围在0至255之间)或2个字节的数值形式(范围在-32,768到32,767之间)。

b)__vbaI4Str将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647)

c)__vbar4Str将一个字符串转为单精度单精度浮点型(4个字节)的数值形式

d)__vbar8Str将一个字符串转为双精度单精度浮点型(8个字节)的数值形式

e)VarCyFromStr(仅VB6库.要调试,则在WINICE.DAT里必须有OLEAUT32.DLL)字符串到变比型数据类型

f)VarBstrFromI2(仅VB6库.要调试,则在WINICE.DAT里必须有OLEAUT32.DLL)整型数据到字符串:

2)数据移动:

a)__vbaStrCopy将一个字符串拷贝到内存,类似于WindowsAPIHMEMCPY

b)__vbaVarCopy将一个变量值串拷贝到内存

c)__vbaVarMove变量在内存中移动,或将一个变量值串拷贝到内存

3)数学运算:

a)__v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1