能力值:
( LV2,RANK:10 )
|
-
-
2 楼
重起验证貌似不能这样下断点吧?
验证就会读取注册表或者某.ini .inf 之类的文件。你可以下这些东西相关的断点试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
遇到重启验证后我们首先想到的肯定是软件要在重启的时候要验证注册码的正确性,那么是怎么验证的一个过程呢?
下面我简单分析一下可能性:
1、把注册码保存到注册表,利用注册表读取注册码,然后经过计算验证其正确性。
2、建立一个文件,把注册信息保存到文件里,然后通过读取来验证。
3、也可能把先验证注册信息,如果正确,那么就保存到注册表或某个文件中,下次启动读取验证,如果为空则失败。
在这上面的可能方法中,如果下断 所需要用到的API函数是:
*****************************************************
访问注册表类常用API:
RegOpenKeyA //打开一个现有的注册表项。
RegOpenKeyExA //打开一个现有的注册表项。
RegCreateKeyA //在指定的项下创建或打开一个项。
RegCreateKeyExA //在指定的项下创建新项的更复杂的方式。
RegDeleteKeyA //删除现有项下一个指定的子项。
RegDeleteValueA //删除指定项下的一个值。
RegQueryValueA //获取一个项的设置值。
RegQueryValueExA //获取一个项的设置值。
RegSetValueA //设置指定项或子项的值。
RegSetValueExA //设置指定项的值。
RegCloseKey //关闭系统注册表中的一个项。
访问文件类常用API:
CreateFileA //打开和创建文件、管道、通信服务、设备以及控制台。
OpenFile //它可以执行大量不同的文件操作。
ReadFile //从文件中读出数据。
ReadFileEx //与ReadFile相似,只是他只能用于异步读操作,并包含了一个完整的回调。
INI初始化文件相关API:
GetPrivateProfileString //得到INI文件的配置信息。
GetPrivateProfileInt //为初始化文件中指定的条目获得一个整数值。
WritePrivateProfilestring //将一个KEY值写入INI文件的指定Section中。
*************************************************************************************
一般情况下,除了注册表中存放,就是WINDOWS/SYSTEM32目录下,再就是自身安装文件目录下创建DAT文件或者INI配置文件,我可以从这些地方入手来分析重起验证的软件,用上面的断点来找到关键部分,但是,重起验证还有别的实施方法吗?破解这类还有其他思路么?本人的分析不可能太完整,希望大牛们能指点。
重启验证这类保护措施还有发展前途么?
希望小弟这块砖,可以引到玉。请大家多多支持。谢谢!!
转贴
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
首先谢谢3楼朋友
例如它是注册表验证类型的,我们是可以这样下断RegCreateKeyExA,但下了断后,在调试过程中你会发现OD经常被断下,而且很多地方并不是我们所需要的,有时候不注意看跟了半天才发觉不是在程序领空,所以就想不管它是读取注册表、ini、dat、dll等文件,只要它读取到假码,并把假码给寄存器EAX时,程序就断下,这样就很容易的跟到程序验证的核心部分,我们就可以专心分析程序代码,但是这样的条件断点怎么下,还请高人指点下!
或者说换一种处理方法来想当程序重起后内存中出现假码78787878的时候,我想要求OD断下,这样的断点又该如何下呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
|
能力值:
(RANK:10 )
|
-
-
6 楼
bp GetPrivateProfileStringA 下知道试试
|
能力值:
(RANK:260 )
|
-
-
7 楼
我不确定我理解你的意思了,你试试CTRL+F2后,打这条命令
tc eax==0x78787878
需要说明的是,跟踪比正常执行要慢得多
加一句,这个不属于下断点,而是调试器的跟踪功能.
|
|
|