某软件破解实验过程(记录)

前言

这是某位前辈的软件,因为加密狗丢了,所以没法用,叫我帮他破解一下看看,我也不确定破解能成功与否,然后这里记录一下过程

刚刚试了一下大概的破解,都不行,这个程序会在运行的时候,先和加密狗通信,确定加密狗存在之后,才会继续运行程序,现在我们就试试,就当练练手


1.软件截图

当我们运行这个软件的时候,如果没有加密狗,会崩出这个东西

这里很奇怪

因为一般打开之后,会提示你要不要看那个关系图,除非你关了才没有,但是这个程序不会跳出那个东西

然后就是准备调用这个,我们这里留个路标,这里注释一下是我们第一个遇到的函数,比如之类的

我们进来这个函数看看

这个值是分配给程序的内存未初始化的垃圾值

所以这个函数是这样的,返回调用进程本身的句柄

这里是要返回这个程序本身的句柄

然后这个函数的返回值是一个字符串

这里将赋值给了

然后将置为之后,又赋值给了和

然后便是调用函数这个东西

开始调用这个函数

然后就是进入下面这些函数

这里其他都不重要,重要的是这个调用的函数

我们单步进入看看

将这个值赋值给了

然后看看是否为,如果为的话,跳转,在中懒得改结果跳去看看的话,可以用搜索这个地址看看

到这里的时候,我们看一下寄存器值

最近一次修改的值是这里,将的值赋值给了它

这里比较之后,这里是用这个指令,这个指令跳转的条件是

什么什么什么的我们暂时不管,就看的值,如果中,和的值相等,=,那这个就会跳转,这时候就不用管和了

然后我们看看会跳去哪里

这个指令,刚刚才被置为了

这里就是把的地址执行的值给了这个地方

就是这里,然后我们执行,此时对应内存地址的内存如下

这里稍微说明一下、还是,字面意思就是只会修改一位的数据,也是就这么多,的话就是,就是这么多的数据

这个函数把的数据都置为了,因为表示为嘛

然后就了函数

然后就是这些函数

=也就是,然后=

不过这里的跳转指令是了,这个函数的跳转是

我们看看要跳转的地址是什么

也就这个指令会一直不断的执行这个跳转,循环遍,,然后直到=,我们再回去看看,下一个要执行的是多少

上一个的值是,我们看看此时的

左上角的四位就是我们刚刚执行那个函数的地址,在地址上的操作是

然后下一个地址就是,也就是内存中的下一行数据的前四个

第一行的指令是将地址上大小,也就是个的空间都置为

然后就是,这个跳转的条件是,也就是进位标志位,要求就是上面那个操作没有产生进位

我们去内存中看看地址上的数据

然后这个函数就会跳转,我们看看会跳到哪里

图片

函数跳转之后就是一个返回结束,我们看看如果不返回会发生什么

所以如果没有产生借位,就会返回退出,这是一种测试内存地址是否为的方式

然后我突然就把这个软件破解了。。。。不写了。。。就是一个判断跳转改一下的问题哈哈哈

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年11月10日
下一篇 2017年11月10日

相关推荐