能力值:
( LV2,RANK:10 )
|
-
-
2 楼
顶上去,有高手指点一下吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不可能,就是修改成可读的,你手动修改了以后还是没有任何效果的
把软件发上来让大家帮你看看
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
你的想法是错误的!
根据你的介绍就是说:打开软件有一个只读的框,里面有机器码,你想把它改为可读写的,然后在里面放其他的机器码来注册。是这样吗?
姑且不说要怎样改!你改了也白改。它的框只不过是一个呈现的界面,没有任何的实效意义。它是一个显示框,而不是输入框,你改了里面的数据,软件并没有读取里面数据的代码。
真正的内部机制我的想法是这样的:
这个机器码当然是软件自己显示的,不是你输入的是不是?所以在软件的内部就有一个计算机器码的模块,它通过检测你的硬件情况(当然也可以是其他的任何东西,不过好像这样比较符合机器码这个名字,但这并不重要),软件生成了一个机器码,而你只有输入对应的注册码,程序进行相应的比较流程,判断是否成功。这样就绑定了软件,形成了一机一码的注册模式。而你要改的哪个框只不过是一个给你看看机器码的交互式界面,你把里面的机器码改了对于软件的验证流程没有任何的影响!
你要做的是找到这个生成机器码的模块,修改它的计算流程,让它得到你想要的结果生成你要的机器码。
一种情况是这个模块是存在于软件中,你可能找到它;另一种情况是这个模块是在安装软件的程序中(这是常见的,因为软件没有必要保留这个模块,它只要在安装时计算一次就可以了),你就需要针对安装程序了。
如果你对它生成机器码的过程不敢兴趣,只是想要让它能够注册其他的机器码,那么你就只要关注它的验证模块就可以了。你要拦截住软件在你输入注册码后的验证模块。我们来思考一下它的验证流程,它可以用机器码生成一个注册码进行明码比较,用注册码倒过来得到一个机器码来比较,同时把机器码或注册码进行计算后比较,等等(这是简单的验证方式,但在这里并不重要,它不会影响我们下面要说的),软件总是要从某个地方得到机器码的(或者类似的东西)来参与验证,可以是一个全局变量或者在另一个文件中,可以是加密了,或者没有。你要做的就是找到并修改它,用你想注册的机器码替换它,从根本上改变软件的验证对象。
我们应该如何入手呢?一个明显的拦截点就在你提到的哪个框里面!!
你要找到这个框的初始化代码(你想要它可读也是一样的,一个框的可不可读只不过是它的一个显示属性),看看这个框是从哪里得到机器码并显示出来的,逆向上去找到原始存储点修改它。
上面的分析是不考虑各种的anti手段的,对付它们最可靠的就是了解和经验,你不能够期望着能够顺利的找到原始存储点,这既然是软件的一个理论上的弱点,也就会是保护严密的地方,可以把它加密,加密存储,自效验,分散存储,等等,寻找的过程中它可以把各种anti伎俩都用上。
写到这里我不禁想要多说几句,希望新手能够从我上面的分析里得到的不是如何完成楼主的想法,而是得到一种逆向的思维方式!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
调试软件,直接修改他生成出来的机器码,找到最原始的那个..
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
..是的。改了也没有用啊! 只改了外表。内心还是原来的那个码!
|
|
|