若如何破解软件

社区服务
高级搜索
猴岛论坛电脑百科若如何破解软件
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
2个回复

若如何破解软件

楼层直达
不懂也不知道

ZxID:10586231

等级: 禁止发言

举报 只看楼主 使用道具 楼主   发表于: 2010-07-11 0
若如何破解软件
要想学好破解,你必须要有汇编语言的知识(好象高手门都这么说过).不过我觉得你只要能看懂汇编语言再加上懂得一种高级语言就可以上手了,当然你必须熟悉常用Win32 API函数(比如:GetWindowText ,Win9x下的 万能断点Hmemcpy ).
为了打下扎实的基础!我建议你下载 看雪论坛 出版的 《加密与解密II》 PDF版.那里有详细的基础知识和工具使用说明.

破解一个程序必要的工具是少不了的!下面我向你们推荐一些破解利器吧!
OllyDbg1.10 我认为这个工具是我用过的最好的工具!
很多人喜欢 SoftICE 但我不喜欢 用他调试容易死机!
Win9x下用 TRW2000 最好!国产的!非常棒!!!
W32Dasm10.0 静态分析必备! 以上软件都可以到 看雪学院 下载!

下面我介绍一下基本汇编命令!
首先,你们要了解一下寄存器.正如他的名字,他就是用来暂时存储数据用的.
寄存器的不同类型:
全功能(General Purpose)
这些32位寄存器可以用来做任何事情:他们分 高位(eax)和低位(ax),低位又分高8位(ah)和低8位(al)(8个二进制)
EAX为12345678 高位是12345678,低位是5678,高八位为56,低八位是78.
eax (ax/ah/al)加法器 (add) 一般函数的返回值放到这
ebx (bx/bh/bl)基(base)
ecx (cx/ch/cl)计数器 (count)
edx (dx/dh/dl)数据 (data)
段(Segment)寄存器
段寄存器定义了哪一段内存被使用。你可能在win32asm中用不着它们,因为windows有一个平坦(flat)的内存系统。在Dos中,内存被分为64kb的段,因而如果你想要定一个内存地址。你指定一个段,并用一个offset(偏移址)(像0172:0500(segment:offset))。在windows中,段有4GB的大小,所以你在Windows中不需要段。段总是16位寄存器。
CS代码段
DS数据段
SS栈段
ES扩展段
FS (only 286+)全功能段
GS (only 386+)全功能段
指针寄存器
实际上,你可以把指针寄存器当作全功能寄存器来使用(除了eip),只要你保存并恢复它们的原始值。指针寄存器之所以这么叫是因为它们经常被用来存储内存地址。一些伪代码(movb,scasb等)也要用它们。
esi (si)源索引
edi (di)目标索引
eip (ip)指令指针
EIP(在16位编程中为ip)包含了指向处理器将要执行的下一条指令的指针。因而你不能把eip当作全功能寄存器来用。
栈寄存器
有2个栈寄存器:esp和ebp。Esp装有内存中当前栈的位置。Ebp在函数中被用成指向局部变量的指针。
esp (sp)栈指针
ebp (bp)基(base)指针
堆栈和寄存器一样都是保存数据用的,堆栈的用途很广.
比如,调用一个函数就要先把参数压栈,
push 1
push 2
push 3
call function
相当高级语言中的
function(3,2,1);
堆栈的工作方式是先进后出!每进行一个PUSH指令后,栈指针(ESP)就会自动减4.压进的数据放在最顶上.每进行一个POP操作时,取出最顶端的数据,ESP会自动加4.

伪代码:
MOV 传送字或字节 可分为 DWORD(4个字节) WORD(2个字节) BYTE(1个字节)
如 MOV ecx,dword ptr ds:[00410000] //copy DS段寄存器[00410000]所指向的双字到ECX寄存器([00410000]是一个地址寻址)
PUSH 把字压入堆栈
POP 把字弹出堆栈
LEA 装入有效地址
如 LEA ecx,dword ptr ds:[edx+34] //把DS:[edx+34]偏移地址存到ECX
ADD 加法,这个不用说了吧! 用法 ADD 被加数,加数
如 ADD EAX,ECX //EAX加ECX,结果放到EAX
SUB 减法
INC 加 1 ,相当于C里的 i++;
如 INC ECX
DEC 减 1
NEC 求反(以 0 减之).
CMP 比较.我们很感兴趣的,呵呵~
MUL 无符号乘法
IMUL 整数乘法
以上两条,结果回送EAX 或 EDX
DIV 无符号除法
IDIV 整数除法
以上两条,结果回送:商回送EAX,余数回送EDX
AND 与运算, 如果源和目标均为1,AND把输出位设为1
OR 或运算, 如果源和目标中有一个为1,OR把输出位设为1
XOR 异或运算 ,如果源和目标位不一样,XOR把输出位设为1
NOT 取反 ,以上运算修改标志寄存器
TEST 测试(两操作数作与运算(AND),仅修改标志位,不回送结果)
指令 AND OR XOR NOT
源位 0011 0011 0011 01
目标位 0101 0101 0101
输出位 0001 0111 0110 10
JMP 无条件转移指令
CALL 函数调用
JE/JZ 等于转移
JNE/JNZ 不等于时转移
NOP 空操作
JL/JLE 小于/小于或等于则跳转
JG/JGE 大于/大于或等于则跳转
还有好多好多~我就不列出来了!
想学好破解就要不断的调试程序!
本帖de评分: 1 条评分 DB +6
DB+6

感谢分享

┌.淫穆”

ZxID:10737016

等级: 上将
..

举报 只看该作者 沙发   发表于: 2010-07-11 0
继续努力不错哦
溪空鹿隐林

ZxID:12131846

等级: 元老

举报 只看该作者 板凳   发表于: 2010-07-11 0
珍惜身边的幸福,不要等到失去以后才悔不当初,-

  也许,你的一生也就只有那么一个人会真正用心在你身上



                                                                        尛柒
« 返回列表
发帖 回复