佟丽娅赵飞燕造型:机器语言、汇编语言可以作什么?

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 22:56:35

机器语言用于直接和CPU会话,典型的有BIOS的解释程序。
(补充一点,BIOS多半是用C编写的)
汇编语言用于编写操作系统和一些低级程序,如Windows 98(C和汇编混和编写)和一些Win/Dos两用的软件(典型的有Windows 98的安装程序)

机器语言只有计算机自己认识的,我们不能拿来做什么东西.

编语言是执行效率最高、功能最强的一种程序设计语言,它能够直接控制计算机硬件,并最大限度地发挥硬件的能力。在对程序的执行时间和占用空间要求很高的场合,必须使用汇编语言才能满足要求。
书本上学的汇编语言,枯燥无味,好象起不了什么大作用.但是如果这样想的话就不对了.
典型的应用:
1.破解注册码 可以使用反汇编工具把软件反汇编,这样程序就变成了汇编语言004056AA |. 6945 F4 E8030>IMUL EAX,DWORD PTR SS:[EBP-C],3E8 //堆栈中取第5位注册码
004056B1 |. 6B55 EC 64 IMUL EDX,DWORD PTR SS:[EBP-14],64 //堆栈中取第3位注册码
004056B5 |. 03C2 ADD EAX,EDX //相加
004056B7 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] //堆栈内为7 //堆栈中取第7位注册码
004056BA |. 03D2 ADD EDX,EDX // edx=E
004056BC |. 8D1492 LEA EDX,DWORD PTR DS:[EDX+EDX*4] //根据edx指定地址
004056BF |. 03C2 ADD EAX,EDX //指定后的地址与004056B5处的eax相加
004056C1 |. 0345 E4 ADD EAX,DWORD PTR SS:[EBP-1C] //堆栈中取第1位注册码
004056C4 |. 6BF0 0D IMUL ESI,EAX,0D
004056C7 |. 8BC6 MOV EAX,ESI eax被赋予新值
004056C9 |. BE C5000000 MOV ESI,0C5
004056CE |. 99 CDQ //eax's sign into edx,so edx=0
004056CF |. F7FE IDIV ESI //eax/esi eax=162,edx=55 //esi=c5
004056D1 |. 8BF2 MOV ESI,EDX //esi被赋予004056CF处除法后的余数
004056D3 |. 33FF XOR EDI,EDI
004056D5 |. 33C0 XOR EAX,EAX
004056D7 |> 803C01 00 /CMP BYTE PTR DS:[ECX+EAX],0 //遍历注册名
004056DB |. 74 0C |JE SHORT profmine.004056E9
004056DD |. 0FBE1401 |MOVSX EDX,BYTE PTR DS:[ECX+EAX] //以符号位扩展复制到edx
004056E1 |. 03FA |ADD EDI,EDX //所有字符ascii码相加
004056E3 |. 40 |INC EAX
004056E4 |. 83F8 50 |CMP EAX,50
004056E7 |.^ 7C EE \JL SHORT profmine.004056D7
004056E9 |> 8BC6 MOV EAX,ESI //esi是004056D1处的余数,esi=eax
004056EB |. 51 PUSH ECX
004056EC |. B9 0A000000 MOV ECX,0A
004056F1 |. 99 CDQ
004056F2 |. F7F9 IDIV ECX //004056E9处eax/ecx
004056F4 |. 59 POP ECX //ecx重新指向用户名字符串
004056F5 |. 03C7 ADD EAX,EDI //edi为所有字符之和,eax为上面的除法的商
004056F7 |. BF 64000000 MOV EDI,64
004056FC |. 99 CDQ //edx=0
004056FD |. F7FF IDIV EDI //004056F5处eax/edi
004056FF |. 8BFA MOV EDI,EDX //004056FD处除法余数赋予edi
00405701 |. 8BC6 MOV EAX,ESI //上面004056E9处未变的余数
大致是这样的,你就可以通过分析每一条汇编,了解注册码在计算机内部的计算方法,最后就可以知道这个软件的注册码是什么了.也可以直接进行修改,让程序运行的时候,跳过检测注册这一段代码,修改的程序就叫作补丁.
2.编写外挂,功能强大的外挂,不懂得汇编是不行的.你要通过反汇编,知道血条,魔法啊,生命,等等这些在内存的地址,然后就可以把这个地址的值取出来,一旦这个地址的值发生变化的时候,就可以按相应的键来补血啊,喝蓝啊.