-
-
[旧帖]
[分享]关于一款小软件的破解,主要是练手
0.00雪花
-
发表于:
2013-4-7 08:48
1827
-
[旧帖] [分享]关于一款小软件的破解,主要是练手
0.00雪花
x-pdfStamp破解实录
先把背景交代一下。这个软件其实是自己无聊用来破解玩的,如果有不到之处,请各位公司朋友见谅,本人无意冒犯您的公司,只是拿来进行一下学术交流而已,请见谅。
开始见天的破解之路吧,首先看看我们的软件,如图
这个软件是用来破解测试的,首先它有一个注册窗口,如图2所示
图2 注册菜单
1、 看一看这个程序的编写方式,拉近loadPE里看看,我擦,神马都木有,这个是为什么呢????原因其实很简单,loadPE对VS2005之后的编译生成的东西都没法检测了,只能这样了,如图3所示;
图3 载入看看是否加壳
发现并木有加壳啊,那么我们来测试一下他的用户输入序列号的代码情况,如图4所示。我输入了用户名test,密码12345,弹出对话框,显示用户名密码错误。
图4 显示错误信息
可以发现,其实他的技术比较基础,都是些我们经常使用的正常变成方式,所以来ollydbg来测试一下跟踪一下,设定messageboxW断点,如图5所示。
图5
根据堆栈信息,我们可以发现调用它的函数,然后结合IDA静态反汇编,查看据图调用这个函数是那个函数,如图6所示。
图6所示
看看具体程序的流程,拿IDA来看一下,如图7所示。
图7 显示在403109处比较有可能的是一个函数4030E4来进行注册程序
尝试了把JNZ改成JZ后,并没有改变程序原有的执行方式,只能再往上寻找调用该函数的函数,说的可能比较绕嘴,但是具体过程就是这样。再次在这个函数开头下一个断点,可以跟到调用这个函数的函数。
图8 调用该函数的函数
发现竟然是个switch语句,进行跳转使用,这个应该就是我们的注册算法了吧,看了看整个框图,发现在框图的最左端那个应该就是注册成功的函数,如图9,图10所示。
图9 switch分支指令
图10 分支结构
通过图10,我们可以很轻易地发现最重要的函数应该就是上边的那个函数框显示的函数列表,如图11所示。
图11 判定函数
在根据之前的做法,查看到底是谁调用了sub_40DA28这个函数。如图12所示,在IDA里面可以看到,上面有一个判断来实现跳转到这个函数。
图12
找到上面的函数,图13所示,在
图13 通过判断来实现跳转
在这个地方,我们将40DFC2处的JNZ修改成JZ就可以了,再运行一下,发现已经可以完全破解了。
图14
图15 破解成功
下面,我们再来修改一下文件中的相应位置的代码数据,用loadPE打开一下exe程序,在40DFC2对应的文件偏移地址中修改相应的偏移位置。
图16 修改文件偏移地址数据内容
将JNZ(85)修改成JZ(84),就大功搞成了。这种方法显然就是暴力破解,如果想猜测他的注册算法,可以继续在40DFC2继续追踪,实现完美破解。
以上所有纯属技术交流,未经允许,不得用于商业目的或其他非法使用地方。
[课程]Linux pwn 探索篇!