花指令去除
1、花指令是程序设计者为了防止程序被破解而进行的方法之一,该方式会产生很多无用的但却不影响程序正常运行的代码,也同时可以防止字符串查找。本实践过程采用的是一个E语言编写的程序。
2、首先我们查看一下加花和未加花的程序不同之处,加过花的程序查到的字符串比未加花的程序显然字符串多,标明有很多无用的字符串用来实现干扰。
3、这里去除E语言花指令用到了OD的一个插件是e Junk code,这里初始地址一般都写00401000,大小都写10000足够,这样点击去除就能去除花指令
4、可以观察去除花指令后的代码,首先先得去掉模块分析,可以看到很多之前的无用代码都没了,但是需要注意的是,去花后的指令可能有些地方还是和原始程序存在差别的。
5、其次,我们通过之前学习的方式,找到关键跳转
6、修改关键代码
7、保存修改后重新打开程序,发现完成了对应的要求
8、这里对整个过程做一下小结,首先我们得发现是否程序加花,如果加花,会出现很多无用的代码和无用的东西作为混淆,此时我们必须去花;去花主要用的就是插件,这里不同的插件还是需要各位自己在平时的过程中收集;去除完花指令后,主要的工作就类似于之前文章中提到的一些知识的运用。
易语言非独立编译查找字符串
1、独立编译:运行时会把需要的支持库释放到一个系统临时文件夹的子目录内,然后运行.
静态编译:运行是不需要任何的支持库支持就可以运行,支持库已经和exe结合到一起了.
2、有些程序,会利用独立编译后通过加壳伪装成静态编译程序,伪装壳的脱壳会在之后的学习中进行介绍。
3、首先我们载入程序,超找字符串发现字符串很少
4、方法1:我们双击字符串中的error后看到对应代码上方是FFD0的机器码,我们在这下断后重新载入运行。
5、程序断在指定为位置后,我们F7进入,之后F8单步到了如图call后继续F7进入
6、继续单步看到cld后
7、此时查找字符串可以找到对应内容
8、方法二:首先我们将程序运行起来,之后我们来到00403000处,查找字符串,这时也能查到对应内容
9、推荐使用第一种方法,相对于第二种找的字符串更全。
10、在这肯定很多读者会问,为什么有些位置是F7有些是F8。个人觉得因为有些call你单步下去会发现程序跑起来,所以得跟进。还有就是为什么cld处就能查到字符串?为什么00403000处也能查到字符串?而这过程为什么必须要程序运行起来的时候才能找到字符串?这些问题我有的也想不太明白,可能知识积累不够,所以在之后的学习中,如果我理解了在回头解答吧
验证窗口的去除
1、适用于一些外挂程序的运用
2、首先我们先找到两个位置,第一个:这里我们习惯性的来到00401000处后ctrl+f查找push 10001指令。
3、我们记下该指令的下面第二行指令push 0x52010007
4、我们回到00401000处,ctrl+b查找ff25在这我们往上看,两个call上面的那个push指令即push 0x52010001
5、在这我们做一下解释:我们记录的第一个push是第二个验证窗口的压入的数值,而第二个记录的内容也是压入第一个验证窗口的数值,在这第一个call是弹出第一个验证页面。因此我们可以考虑,把压入第一个窗口的数值直接改成压入第二个页面的数值,这样是否可以直接跳过第一个窗口。
6、我们作如下修改
7、保存后打开程序,发现第一个窗口的验证过程已经去除了。
工具与实例程序
1、本次的实例学习中所用到的主要是OD,注意使用的时候最好常清理UDD文件
2、本次实例学习所用到的程序请见:链接:http://pan.baidu.com/s/1o7Z4WrC 密码:t1oo