程序加密范围,包括代码加密,加壳等等,都属于三方程序附加保护措施。
这当中还存在另一种加密方式,也就是文件加密,文件内容加密。
内容加密过程往往依赖于独立程序,常见于程序保密文件输出项目。
也就是说,程序内部代码逐行运行后,在输出文档文本后,进行一次加密算法运算,紧跟着输出结果,呈现方式多数以乱码以及不规则符号呈现,这样的目的很简单,单纯的为了保存输出文件的信息安全。
如今,见到文档内这一行行乱码,刘毅点了点头,对于解密方式,他自然有着他独有的方法。
想要进行解密发觉内部代码中编写者设置的解密算法,势必是要对程序内部代码进行反编译,如此一来,另一个问题出现了,程序保护壳怎么去除?
任何一个程序在使用过程中,程序开发者不可能说,让自己的程序裸露的站在各大系统内,势必会增加外部保护壳。
进行去壳操作,可以说是进行反编译最为基础的一项操作。
说起去壳就必须要清楚,程序加壳的目的。
所谓壳,就是一项专门保护程序的一层保护代码,使原程序的内部代码失去原本的面目,从而保护程序不被非法修改和反编译,因为和龟壳的概念相差不大,因此形象的将这个外部加密保护层,称之为壳。
在去壳上,刘毅把握还是比较大的,毕竟曾经编写出太多的程序,加壳这一项,可以说是任何一个程序员必须掌握的一个技能。
翻起工具文件夹,找到国外程序壳扫描工具,ped扫描工具,紧跟着通过进程信息,找到程序根目录调出程序。
找到程序运行根目录,打开ped,加载程序,开始对程序进行扫描。
扫描过程差不多经过了十分钟,十分钟后,ped扫描工具内出息壳类型,upx。
清楚程序所加的保护壳,紧跟着开始进行脱壳操作。
对一个加了壳的程序,去除当中无关的干扰信息和保护限制,这一过程,也就是脱壳的过程,同时,如何验证一个壳是否脱壳成功,检测方法,就在于脱壳后,程序是否允许正常同时使用反汇编工具能否找到程序接口,这两点一一成功,证明脱壳成功。
upx的壳是一种年纪比较大同时防护强度非常高的壳,不过,也正因此,因为年岁较大,脱壳方式更是层出不穷。
紧跟着,继续打开工具,找到ollydbg,正式进入到脱壳进程当中。
开始,使用od载入程序,随着程序的载入,od弹出附加壳信息,因为之前已经使用过ped查出了壳的类型,见到这样的提示信息,也没多少意外,紧跟着继续使用汇编程序继续分析。
对于upx这款壳,汇编入口点,刘毅还是清楚的,紧跟着打开程序内部搜索工具,键入“pushad”
紧跟着,画面刷新下来,光标指向入口点。
0040e8cc57pushedi
0040e8cd83cdfforebp,ffffffff
0040e8d0eb10jmpshortchap702.0040e8e2
0040e8d290nop
看着入口点,下设多项信息,刘毅眯起了眼睛,静静的看着,见信息点内,无问题,准备下断,下断在55pushebp这一点,系统放空,紧跟着取消断点,返回。
这样一个简短的操作,可以说,将upx彻底粉碎,如今将自己的操作命令保存,将加载程序重新保存在桌面上,一个与之前加载一模一样的程序保存在了桌面上。
紧跟着,也没敢运行当前保存的程序,仅仅是继续使用ob再次进行程序加载,当然,这次加载的并非是原程序,而是脱壳之后保存下来的无壳程序。
随着程序的加载,汇编界面命令发生了非常大的变化,多数的代码信息全部显示出来。
看着这些信息,刘毅知道,这次的脱壳算是成功了。
成功后,通过内部文字文本搜索工具,准备对程序代码内一切有关文本线索进行搜索,想要从中找到解密字符串。
找到程序主接口后,点开ob自带的字符串搜索工具,很快,一列列字符出现在了主显示区域内。
看着这些字符信息,刘毅自上向下看了看,多数字符都是无用的。
见到此处,刘毅挠了挠头,自语道:“难不成加解密字符串也被这个人进行了语法加密?”
要知道程序代码内,多数以整数型逻辑形和文本型为主,如今刘毅所利用汇编工具进行字符串搜索所用的核心方式,就是搜索整个程序内,文本型数据的集合搜索,也就是说,整个程序内任何的字符都被搜索出来。
如今字符型数据内,已经浏览了一半的字符型数据,仍没见到带有解密字符串呈现,刘毅不得不怀疑,这当中是不是还有其他什么自己没有想到的东西在里边儿。
内部代码,字符串隐藏方式较多。
简单说明一点,就可以完全摆脱自己如今使用的方法查找字符串。
关于程序内部代码当中的代码形式,分为逻辑型,文本型,整数型。
如今所使用到的方式是文字型字符串搜索,通过表面文字简单分析,不难看出,这种搜索方式只对字符型数据有效,若是想要逃过这样的搜索,只需要进行一个语句就可进行逃避。
形式转变,也就是将文本型数据进行一次转换,将文本,变向转变成整数型,从而使文字类数据以整数型数据进行伪装保存。
这样下来,原本是带有字符串的数据伪装成了整数型数据,那么,想要对字符串数据进行搜索检测,显而易见,这一条路就不通了。
猜想到这儿,刘毅摇了摇头。
毕竟对方的程序已经进行了加壳处理,再对内部代码进行如此的优化还是太过繁琐了,觉得这样一个猜想不大成立,紧跟着,继续浏览着文本数据。
可能也是因为刘毅的命还算不错,多亏了他联系到加壳这一块儿,才没有转换思路,在字符串数据最下方,终于两串儿等距长度的字符串出现在了黑底汇编界面内。
看到这两串字符串,刘毅握紧了拳头,心中多少还是有些激动的。
紧跟着,迅速将两串字符串拷贝下来,紧跟着想也没想,立刻关闭了汇编工具。