重启验证的要点是在程序初始化之前的一个判断上面首先查壳这里我用EP查壳,这一步很重要养成一个好的习惯很重要
发现程序无壳并且用的是Delphi 写的ok第二步载入OD 程序的入口点下方有很多CALL就是Delphi 的特征大家可以记住 ?
第三步查找 字符串 【这里采用UNICODE】至于为什么不用ASCII 请大家参考我的另一篇文章:教给大家一个查找字符串的小技巧 这里可以直接在段首就查找UNICODE码因为程序没有加壳就不牵涉到解码问题 貌似没有什么关键字符,我们直接右键Find【查找】 查找:注册 ? ?
如果提示:成功注册 呢就会显示 ont fond 【未找到】所以为了避免这类错误 我们直接查找和注册有关的就OK了 第一次查找我们找到了这样的一句话 ,这里不是关键我们继续 Find Next 【查找下一句】 直到找到这样一句 ? ? ? ? ? ? ? ? ? 我要说的技巧来了, 这里就是重启验证的关键,大家不要去找什么注册成功之类的因为即使你修改了某个跳转使得注册成功,呢么它的下一条指令就是重新启动,重新启动后程序不会读取你修改的跳转指令而是通过判断某一个数据地址中的值是否为注册成功以后才能变成的唯一的一个值来判断程序是否被注册所以我们直接找已注册版本这样类型的字符串ok我们双击进入代码段 我们在已注册版本上面发现一个跳转指令 ,这就是重启验证类型的关键跳转,而不是注册成功上面的跳转指令 这里大家要分清楚 我们可以发现这里的关键跳转是通过比较一句常量地址里的数据值来判断是否跳转 ? ↓1。
cmp【在汇编中意思是比较】2。byte ptr ds:[0x575F14] ? ?2。 ?1 :其中的 byte ptr ds 代表 类型是地址 ? ? ?2。 ?2:[0x575F14] 这个括号里的是一个常量3。常量的意思就是固定不变的量已经被提前定义好的量 4。
变量是要通过计算的到的量 ? ? 4。 ?1:比如:[ebx 0x30C] ?这里我们无法确定ebx中的值将会是多少 ?所以要用ebx中当下的值加上30C得到答案 这就叫变量5。总结 cmp byte ptr ds:[0x575F14],0x0 的意思就是比较0575F17这个固定地址中的数据的值和0的大小 ?↑ok第五步:我们选中比较代码然后右键 → 复制 → 到剪贴板 ?然后右键 → 查找 → 所有命令 粘贴进去我们刚才辅助的语句 然后查找 发现多少句就改多少句 ?如果比较的下面是je 就nop掉 如果是jne就改成jmp 具体怎么改得结合程序分析 因为这个程序的je实现了所以我们就逆其道而行之 还有一种办法直接在数据窗口右键 → 转到 → 表达式 ? ?然后输入我们刚才的比较的关键常量 修改数据里面的值为1也ok 最后我们保存就妥了重点和技巧 :1。
查找字符串的时候不要查找注册成功 而要找 已经注册 之类的, ?2。 破解的时候要注意关键跳转的上面一句的比较最后记得要把所有调用呢句比较的下面的判断跳转全部改掉,这样才能达到完美 ?
求采纳。
应该是要注册码的
非法软件,还是少用,病毒多
你要用免费的群发软件,用豪迪吧,不用哪么麻烦!!只是后面多个网站的后缀!