破解实例2

步骤如下

1.破解样本 链接为 http://pan.baidu.com/s/1o8lwLiq

2.首先打开样本程序,得到关键字符串“try again”,如下


image

3.打开IDA加载该样本程序。打开View->Open Subviws->Strings 字符串窗口,搜索关键字符串。

image

双击字符串,进入IDA-View 窗口,按table键转换为Pseudocode 窗口,这是反编译过来的c代码,观察它的逻辑。找到判断,跳转的位置。如图 可以看出调用了istrcmpA函数,比较输入字符串和要找的字符串,然后跳转。在这一行 代码处按table键切换窗口找到反汇编位置,如图是代码段0x00401094 的位置。

image
image
image

4.打开OD找到这个位置。
此时我们在这个位置下断点可以看到,堆栈区显示两个字符串,一个是我们输入的字符串,而另一个就是实际的序列号。

image
image

有两种方法可以破解,第一种方法是直接输入这个序列号就行了,另一种是我们找到跳转到显示“try again ”的位置,修改跳转指令,步骤如下:
方法1:输入“`mddggzdl” ,显示"very good".

image

方法2:分析断点附近的指令,单步调试发现跳转指令在指令“0040109A”处 当跳转实现时,跳转到"success" ,当跳转没有实现时,跳转到“fail” 。我们只需要修改这个跳转条件,让它的跳转调到"success"即可。分析指令我们知道把JE 改为“JNE”即可。如图:右键汇编,改JE为JNE,然后汇编,右键复制到可执行文件-所有修改-全部复制,在弹框中右键保存文件,输入保存的文件名,保存即可。

image
image
image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容