VM 代码保护 软件作者为了防止破解 就把代码进行变形乱序 VM的代码是灰常凌乱的 看起来没有顺序感觉和正常的代码比较灰常的奇怪 断点 又分INT3断点和硬件断点 区别在于一个能看见 一个看不见 然后in3断点容易被检测 领空 这是个比较难理解的问题 领空分为系统领空和程序领空 一般来说以004开头的地址是程序的领空 然后系统的领空一般是以7开头 大家需要注意的一个问题是 系统的领空千万不能去修改 像这样修改是不允许的不然系统崩溃就玩完.... 段首和段尾 段首 是上一段的结尾 也是下一段的开头一段是以retn开始和retn结尾 我们经常听到在段首下断 所以我们要找的就是retn下面第一个push 我现在给大家找一段 像这一段代码 段首是以push开始滴 所以我们不会在retn那里下段 而段尾我们是在retn处下断 因为软件的子程序是以retn返回到某一地方 所以返回的时候要在retn出下断 山寨 估计大家也听到很多了 山寨 其实就是做一个管理端 把软件连接到你自己的服务器 成为你的软件管理端就是管理你的软件 比如说我这个软件要山寨 我就把软件的连接服务器地址给改成你自己的然后你做出一个管理端来管理你的软件 山寨所具备的条件:传输密码 服务器地址 服务器文件 传输密码是验证服务器的 如果没有传输密码的话是无法连接服务器进行验证的 爆破 我们破解一般分为两种 追码和爆破 爆破 就是通过改动代码实现我们所要的 我先演示下 假如说 这个跳实现了 他就是注册失败 如果没有实现就是成功那我们就让跳不实现 这样就成功了 这个过程就叫爆破 追码 他是通过跟踪假的注册码找到真正的注册码 有的软件是一机一码注册的 并且是本地验证所以我们可以通过输入假的注册码 找到对比的地方 找到注册码这个过程成为爆破 当然 有的软件没那么容易追码的 他会把假码和真码进行加密后再对比 或者干脆让你输入注册码以后让你重启软件 在软件启动的时候进行对比 这个就叫做重启验证 Patch 大家很少接触到的一个技术 这个是我在不久前看教程看到的 大家都知道软件作者为了 压缩软件的体积或者是防破解 都会加壳 加壳的程序都不能直接保存 需要打补丁 而patch就是通过不打补丁破解带壳文件 并且是直接保存的这个我以后会告诉大家的 补丁
上面也说过了 软件加壳后不能直接修改保存文件 所以要打补丁进行内存修改 这样就可以达到我们破解的目的 当然补丁也并为万能的壳有可能会进行防内存写入什么的 堆栈回溯 我们常说的F12暂停法就是通过堆栈返回 比如说我们要找到这个软件的信息框是哪调用的 我们就可以通过暂停法回溯到那里 我记得软件窗体也可以的 一般来说没有经过特殊处理的E语言程序都可以通过这个方法非万能啊 字符串 说白一点就是给你点提示 OD的搜字符串不给力的 以这个软件为例看我演示下 软件已经断下了 我把断点撤销 点暂停 然后回溯 这里有两个地方调用 一个是电脑系统调用 一个是程序调用我们当然要找程序的调用啦 看到没 很容易就找到了 API 怎么说呢 就是电脑的某个地方的名字吧 这东西还真不好解释大概的意思就是说 如果我们调用信息框 那么就是调用系统的MessageBox 还是百度给力啊 OEP 程序的入口点 如果我们找到OEP 我们就能快速脱壳 就类似于找到钥匙就能开门 壳就是一把锁 OEP就是锁孔 关于怎么找OEP一般来说有几种方法 以后会说 IAT 就是指针 脱壳的话可能要修复指针 如果没有指针就相当于人只有一个身体没有灵魂 壳可能会对指针进行处理 这个小菜也不怎么了解 大家还是百度吧
反正大家要知道修复输入表就是修复IAT
|