您现在的位置: 主页 > QQ黑客资讯 > QQ黑客空间 > 文章内容

破解静态加密软件技术

作者: QQ黑客 来源:未知 时间: 2013-10-30 阅读:

通过本文您可以学到:

  (1)软件注册方面的知识

  (2)使用UPX脱壳、使用PEID查壳

  (3)使用C32Asm、WinDasm进行汇编和反汇编方面的知识

  本文用到软件:

  (1)PEID

  (2)UPX

  (3)C32Asm

  (4)WinDasm

  一般来说,作者在将软件编写出来后,出于安全和利益的考虑,往往会对软件进行加密,来防止盗版和保护合法者权益。软件加密强度跟作者的编程水平有关,本文所说的软件加密也就是平常所见的软件注册。

  (一)软件注册方式

  软件注册主要有以下几种:

  (1)注册码方式

  现在绝大多数软件都采用注册码方式进行保护,这种方式便于在因特网上进行交易,没有额外的成本,在软件没有注册前,一般来说都会对软件的功能、时间和次数等进行限制。常见的注册码方式有“机器码+注册码”、“用户名+注册码”、“组合方式+注册码”,其中最简单的就是早期的固定字符串的软件注册,即设置一个固定的字符串,如果输入的字符串跟指定的相符,则执行程序的正常功能,否则提示退出或者重新输入验证码。

  (2)加密狗方式

  加密狗方式多见于商业软件,而且一般都会有一个形同USB盘的一个硬件,由于一个加密狗成本在几十元以上,因此个人软件很少使用加密狗方式。

  (3)光盘加密

  光盘加密常见于游戏光盘,防止原版光盘被非法复制。

  (4)网络验证

  网络验证是软件在注册时要在线连接到官方网站进行注册,或者在注册后会不定期地自动连接到官方网站进行正版校验,如果不通过则视为盗版或者试用版本。

  (5)NAG窗口

  软件在没有注册或者软件的试用版会经常弹出一些提示窗口,要求注册,这些窗口就被称为NAG窗口,而且NAG窗口在软件试用期过后,很可能会屏蔽软件的正式窗口或者某些重要功能窗口,使得软件不能被正常使用。

  (二)破解实例

  本例中的注册码是固定的字符串,自由输入正确的字符串才会显示“Welcome”,否则显示“I am Sad!”,程序运行界面如图1所示。

  图1 破解原文件

  1.查壳

  对于破解软件来说,第一步往往是检查软件是否进行了加壳处理,目前网络上面有很多可以用来查壳的软件,例如大名鼎鼎的PEiD等。直接运行PEiD v0.93版本,然后选择需要查壳的文件,选择完成后,如果能够识别,会自动显示是采用什么方式进行加壳的,即显示为“UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo”(图2)。即采用UPX软件进行加壳的。如果程序没有加壳,则会显示为具体的编程语言。

   

  图2 查壳

  2.脱壳

  查出被破解软件是采用什么方式的加壳软件后,然后选择相应的脱壳软件进行脱壳,我所采用的UPX脱壳软件需要进行,安装完成后会自动将脱壳的一些操作加入到文件打开菜单中,需要脱壳时选中文件,右键单击,选择“UPX ShellEx”-“UPX通用脱壳机”,软件自动脱壳(图3)。

  图3 脱壳

  说明:有的软件可能采用多种方式加壳,对于这种脱壳就需要一层一层的脱,一般脱壳成功后,会进行一些文字上的提示(图4)。

   图4 脱壳成功

  3.反汇编原文件

  本文采用W32Dasm,W32Dasm是一款绿色的、功能非常强大的反汇编工具,最高版本为8.93,目前已经不再更新了,一些爱好者根据需要对其进行了修改,出现了后续一些版本,本文使用的就是修改后的版本,称为W32Dasm 10.0版本。W32Dasm反汇编出的源代码主要用来分析程序的一些基本信息、显示出程序使用的各个寄存器段、区段、程序包含的对象以及应用的函数等信息(图5)。

  图 5 使用W32Dasm反汇编原文件

  使用W32Dasm反汇编原文件后,主要用来查找一些字符串,这些字符串可能跟注册有关,在本例中主要查找“I am Sad!”,在W32Dasm的菜单中选择“参考”-“串示数据参考”,在弹出的“W32Dasm串式参考内容清单”(图6)中拖动滚动条查找“I am Sad!”字符串。

       图6 查找字符串“I am Sad!”

  注意:使用W32Dasm反汇编的应该式脱壳以后的原文件。

  技巧:在查找字符串时,由于字符串是按照字母顺序进行排序的,因此可以以查找字符串首字母所在位置进行查找。

  查找字符串的目的就是为了定位地址,找到“I am Sad!”字符串后,双击该字符串后,会自动跳转到W32Dasm反汇编窗口,并以浅绿色加亮显示一条数据,记下加亮显示数据的地址信息,在本例中为“004513E6”(图7),在该地址上方,有一个跳转(jne),在“Welcome”字符串上面有一个“jne”跳转的地址,记下该地址“004513D2”。

  图7 找到地址004513D2

  4.使用C32sam反汇编工具汇编原文件

  C32asm也是一款反汇编工具,C32asm可以直接对反汇编的文件进行十六进制或者直接进行汇编代码的修改。使用C32asm反汇编原文件以后,鼠标右键单击,在菜单中选择“跳到”,在Eip跳转对话框中输入跳转地址“004513D2”(图8),然后单击“确定”,回到C32asm反汇编窗口。

  图8 跳转到004513D2地址

  回到C32asm窗口会高亮显示,选中记录“:004513D2:: 75 12 JNZ SHORT 004513E6”然后右键单击,在菜单中选择“对应Hex编辑”,然后再次右键单击,在弹出菜单中选择“对应汇编模式编辑”,再次选中记录“:004513D2:: 75 12 JNZ SHORT 004513E6”右键单击,在弹出菜单中选择“汇编”(图9,图10),直接将“JNZ SHORT 004507E6”修改为“NOP”或者“JE SHORT 004507E6”,然后保存。    

  图9 修改反汇编地址

  图10 修改跳转地址

  5.运行破解后的文件

  运行破解后的程序“CrackmeNo1_Unpack.exe”,随便输入一个注册码,都会显示“Welcome!”字符串。到此程序破解完成。

       图11 软件破解成功