这里是跟着shark恒星的视频来的,看看后面能不能自己分析出来算法
加载peid无壳,是BC++写的 用ID64查出来是delphi写的(具体我也不清楚反正能用dede打开哈哈)
看模块名 这里的Regist项很显然就是了 右面窗口中buttonOKClick应该就是了为了确定打开pe explorer看一下
打开的时候按一下上方的Resorce Viewer/Edit按钮就会出现这个资源管理窗口了 很明显 Button Ok就是了
用OD载入,打开对应位置一直f8看到
0046C48C |. BA 7D845C00 mov edx,010Edito.005C847D ; ASCII "注册码正确. 谢谢你购买 010 Editor!"
很明显了就是上面的跳转0046C484 |. /75 35 jnz short 010Edito.0046C4BB
把这里nop掉就能打开了,不过再次打开还是会有它,点确定就能进去
接下来就是把它给搞掉。
打开后直接出现了用户名和注册码说明是从文件或者注册表里读出来的,有一个地方会有这样的操作,读取用户名和注册码,判断读取到的用户名和注册码是否正确,正确就不出现上面的窗口,不正确就弹出这个窗口。而我们要做的就是找到这个窗口!
入手处还是它写入的注册表或者文件我们要做的步骤,搜索字符串,能搜索到最简单不过,不行就搜索注册表再不行就看一下它操作了那些文件吧
很幸运 在注册表中搜索到了它们接下来是下断
在od里查找所有模块的名称找到RegOpenKeyExA模块这应该是从注册表中读取数据的函数
右键查看调用书选项把那个窗口所有的call都下f2断点(可以右键,全部下f2断点选项)然后f9看堆栈窗口,直到找到和刚才找到的位置相同的为止(找不到就找相似的)
然后单步走,会发现先出现了用户名,然后出现了注册码然后继续向下走,注册码出现后不久有一个return,return后就应该出现关键跳了,继续走,只有一个小跳转和也不远肯定不是关键跳了 之后走到了00469C1F |. /0F85 67010000 jnz 010Edito.00469D8C
挺远仔细看一下还和之前的验证相似;就是这里了,把它nop掉就可以了。
这里没有算法,下次看看能不能把算法搞出来
用到的工具pe exploer看雪上有
总结:注册码一般放在注册码或文件中,同一个程序中,如果需要不只一次验证的话这几次的前后几句应该区别不大,可以注意一下