很多人都想学习解密,这东西刚入门时会让人沉迷进去,可以饭不吃、觉不睡。出现这种现像,也许是解密满足了人们的猎奇心里吧。但掌握这方面技术,对自身的 提高确实有好处。可以通过跟踪软件,提高自己的调试技能,并且能了解他人程序思路,使自己写出更好的程序。研究解密技术有助于掌握一些系统底层知识,系统 底层知识绝对是构造起大型软件的坚实基础。许多程序发展,都经历了这一锻炼过程的。 而大多数人可能认为解密是一门高深的学问。造成这种原因是以前这方面 的技术资料缺乏,从而将“解密”这一技能“神”化了。初学者一般不知从何下手,由于没方向,花费了大量时间和精力,走了不少弯路。这里就给对这方面感兴趣 的读者指明一个方向。
讨论前,先了解一下计算机中的程序。高级语言编写的程序,会编译成机器语言在CPU中执行,如Visual C++等。由于机器语言与汇编语言是一一对应
的,因此就可将机器语言转化成汇编语言,这个过程称之为反汇编。而汇编语言可能读性是比较好的,这样就可分析程序流程,解析其功能了,这个过程就是解密
(俗称破解)。也就是说,解密的基础是建立在汇编语言级别上的,因此想涉足这一领域的朋友,汇编语言一定得学好。汇编语言是大学计算机的必修课,这方面的
书籍品种很多,虽然大多书本是以DOS汇编为讲解平台,但对理解汇编指令功能是没影响的。
等汇编学好了,此时一般的破解文章己能看懂了,但为了水平提高的更快些,建议再掌握Win32编程。Win32程序设计就是API方式的Windows编 程,学习Windows API将使您更深入地了解Windows工作方式。此类书籍有Charles Petzold著的《Windows程序设计》 (以VC来讲解)。另一本是罗云彬著的《Windows环境下32位汇编语言程序设计》,它以MASM汇编为讲解平台。
学习解密其实很累的,需花费大量的时间,而且经常会碰壁,三五天毫无进展是极为平常的事情。这时你可能有点想退却,其实你不要着急,只要你认真学习,成功 就在眼前。没有人是生来就什么都会的,如果你有问题,就大胆的去问你周围的人。学解密的秘诀就是勤奋+执着!记住并能做到这两点,你会变得很优秀的。
等你解密入门后,建议再看看Matt Pietrek、Jeffrey Ritcher等大师的专著,这些书是每个程序员都应该阅读的:
《Windows 95 System Programming Secrets》(中文译名《Windows 95 系靳程式设计大?秘》),
《windows高级编程指南》,《Windows2000编程技术内幕》,《Win32系统编程―Windows 2000应用程序开发指南》等。这
样,你就对系统底层有一定的了解了。到了这个水平后,就可朝软件加密这块发展了,例如编写自己的加壳软件等。
软 件的加密与解密是一个迷人的研究领域,它几乎可以与任意一种计算机技术紧密结合――密码学、程序设计语言、操作系统、数据结构。而由于这样或者那样的原 因,对于这一领域的关注程度一直还处于低温状态。而这两本书相信会为更多对知识怀有渴望的朋友多开辟一条走向这个领域的道路,并且进而推动这个领域的不断 发展。
第一课 逆向分析基础知识 资料 1.2 局部变量 API函数资料 其他资料 |
第三课 动态分析技术 OllyDBG工具下载 CCDebuger的OllyDBG入门教学 名词解释 3.2 Olldbg常见问题 OllyDBG技巧汇集 3.3 Olldbg脚本教学 OD脚本教学 |
|
第四课 静态分析技术
所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过
程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状
态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便
顺利破解。 常用的静态分析工具有W32DASM、C32Asm和IDA Pro等。
4.1 认识PE格式
在Win32平台上(包括Windows 95/98/ME/NT/2000/XP/2003/CE),可执行文件是
PE(Portable Executable)格式。PE文件使用的是一个平面地址空间,所有代码和数据都被合并在一起,组成一个很大的结构。文件的内
容被分割为不同的区块(Section,又称区段、节等),块中包含代码或数据。
刚接触这块的朋友只需要简单了解一下PE格式,更具体的PE格式请参考脱壳基础知识入门(2006年版)
PE相关名词解释如下:
1.入口点(Entry Point)
程序在执行时的第一行代码的地址应该就是这个值。
2.文件偏移地址(File Offset)
PE文件在磁盘上储存时,各数据的地址称文件偏移地址(File Offset)。用十六进制工具(例如Hex Workshop、WinHex等)打开文件显示的地址就是文件偏移地址。
3.虚拟地址(Virtual Address,VA)
由于Windows程序是运行在386保护模式下,在保护模式下,程序访问存储器所使用的逻辑地址称为虚拟地址(Virual Address,VA)。与实地址模式下的分段地址类似,虚拟地址也可写成"段:偏移量"的形式,这里的段是指段选择器。
4.基地址(ImageBase)
文件执行时将被映像到指定内存地址中,这个初始内存地址称为基址(ImageBase)。在Windows NT中,缺省的值是10000h;对于
DLLs,缺省值为400000h。在Windows 9x中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区域,
因此Microsoft将Win32可执行文件的缺省基地址改变为400000h。
5.相对虚拟地址
相对虚拟地址(Relative Virual Address,RVA)表示此段代码在内存中相对于基地址的偏移。即:相对虚拟地址(RVA)=虚拟地址(VA)-基址(ImageBase)。
4.2 虚拟地址和偏移量转换
在OllyDBG,IDA和W32Dasm下显示的地址值是虚拟地址(Virual Address,VA)。而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 。
其转换原理是因为PE文件在磁盘上的数据结构与在内存中的结构是一致的,如下图:
具体见:http://bbs.pediy.com/showthread.php?s=&threadid=18022
在实际操作时,使用 LordPE等工具很容易进行File offset与VA的转换。LordPE打开目标文件,点击FLC按钮,打开如下图的对话框,填入相应地址,点击DO按钮即可转换:
4.3 文件类型分析
文件分析是静态分析程序的第一步,通过相关工具显示欲调试文件的信息,如它是用什么语言写的,是否加壳等。常用的文件分析工具有PEID,FileInfo等。有关壳的相关知识等入门后,再参考相关教学,如 脱壳基础知识入门(2006年版) 。如果查到文件有壳,此时静态分析是没意义的,但可以用OD动态调试,分析程序算法。
1.PEiD
PEiD的GUI界面操作非常方便直观。它的原理是利用查特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码部分,利用这点就可识别出是何种语
言编编译的。同样,不同的壳也有其特征码,利用这点就可识别是被何种壳所加密。下面PEiD识别出这个软件是用Asprotect 1.2x加的壳。
2.FileInfo
FileInfo(简称Fi)另一款不错的文件检测工具。
FI的具体用法
4.4 W32Dasm简介
W32Dasm简介
4.5 IDA pro操作
IDA简易教程
IDA里的中文字串
4.6 keymaker内存注册机
Q:什么是某个软件的中段地址,指令长度,第一字节,这些数据怎么得到,这些数据在内存注册机中怎么应用?
A:
青色代表着注册码的保存模式
绿色的是中断地址,中断地址一般选择注册码保存模式的下一句,或下几句地址,但必须保证程
序中断到这个地址时注册码保存的值没有被任何东西修改或改变。如下面的例子,中断地址可以选在00401205和00401207,但不能选在
0040120C这个地址,因为00401207这个Call过后会修改eax的值。
红色的是中断的第一个字节
红色加上蓝色的字节就是指令长度,如下面的例子选的中断地址是00401207,这个地址上有5个字节,所以指令长度是5
00401205 50 PUSH EAX ;eax中保存着真注册码
00401206 52 PUSH EDX ; edx中保存着假注册码
00401207 E8 68 FF FF FF CALL 00401174 ; 比较真假注册码
0040120C 85 C0 TEST EAX,EAX ; 测试注册码真假结果
0040120E 75 42 JNZ SHORT 00401252 ; 假则跳向错误,真则不跳
第五课 常见保护的攻击
5.1 序列号方式
软件验证序列号的过程,其实就是验证用户名和序列号之间的数学映射关系。这个映射关系是由软件的设计者制定的,所以各个软件生成序列号的算法是不同的。这是最常见的一种保护方式。
序列号方式
序列号方式
商朝子教学--破解原理
crack新手进化篇(新手级)
RoBa教菜鸟写注册机入门篇
RoBa教菜鸟写注册机中级篇
RoBa教菜鸟写注册机高级篇
5.2 警告(NAG)窗口
Nag的本义是烦人的意思。Nag窗口是软件设计者用来不时提醒用户购买正式版本的窗口。
NAG窗口
警告(NAG)窗口
5.3 时间限制
这类保护的软件一般都有时间段的限制,例如试用30天等。当过了共享软件的试用期后,就不予运行。只有向软件作者付费注册之后才能得到一个无时间限制的注册版本。
时间限制
时间限制
5.4 Key File保护
KeyFile(注册文件)是一种利用文件注册软件的保护方式。
Key File保护
Key File保护
5.5 功能限制的程序
这种程序一般是DEMO版或菜单中部分选项是灰色。有些DEMO版本的部分功能里面根本就没有。而有些程序功能全有,只要注册后就正常了。
功能限制的程序
功能限制的程序
5.6 CD-check
最简单也最常见的光盘保护就是程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。
CD-check
CD-check
5.7 重启验证
5.8 网络验证
摘自:http://bbs.pediy.com/showthread.php?p=224481#post224481
加解密入门基础知识