admin 发表于 2014-4-12 18:38:59

破解经验交流

1、汇编2、脱壳1)5种常见的语言特征(也是判断是否到达OEP的一种方法)2)附加数据的处理3)自校验的处理   1) 如果是调用错误提示——F12堆栈调用法   2)如果是文件/数据损坏错误提示——2OD对比法(bp CreateFileA)4) BC++程序的手动查找IAT3、破解1>一般破解目标:找按钮事件方法:1)查找字符串法      2)F12堆栈调用法      3)MessageBoxA断点法2>重启验证目标:找验证类型      1)注册表类型      2)文件类型      1)ini文件类型      2)其他文件类型方法:1)访问注册表类常用API
RegOpenKeyA打开一个现有的注册表项
RegOpenKeyExA打开一个现有的注册表项
RegCreateKeyA 在指定的项下创建或打开一个项
RegCreateKeyExA 在指定项下创建新项的更复杂的方式
RegDeleteKeyA 删除现有项下方一个指定的子项
RegDeleteValueA 删除指定项下方的一个值
RegQueryValueA 获取一个项的设置值
RegQueryValueExA 获取一个项的设置值
RegSetValueA 设置指定项或子项的值
RegSetValueExA 设置指定项的值
RegCloseKey 关闭系统注册表中的一个项(或键)    2)访问文件类常用API
CreateFileA 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
OpenFile 这个函数能执行大量不同的文件操作
ReadFile 从文件中读出数据
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调      3)INI文件APIGetPrivateProfileStringA 获取ini文件信息(读取、写入) 对于重启验证类型的软件有这样的一个思路:试运行程序,输入假码,先在程序安装目录找,看是否有可疑文件可以写入,再可以通过直接查找注册表(regedit),或者是用OD查找字符串查找有无可疑信息,当然这个需要直觉,更确切的说是需要经验。但是,请记住:有怀疑才有进步! 3>不脱壳破解1)先到达OEP,即可查找字符串2)直接使用F12调用堆栈注意:带壳调试的时候,当找到相关按钮事件之后,最好是下硬件执行断点!因为如果我们下bp普通断点,当我们重新载入程序之后,bp断点可能失效      4>patch1)   借助相关带壳patch工具2)   手动patch1)尽量以改动最少字节来达到破解的目的2)找到注入代码的地方1))SFX区段2))如果在要跳向OEP的地方有空闲空间可以使用则此处为首选,例如UPXMov byte ptr ds:,xxMov dword ptr ds:,xxxxxxxx 破解要使用到的相关辅助工具1、DEDE(Delphi/BC++)2、PE Explorer(Delphi/BC++)3、VBExplorer(VB)4、KeyMake

cdweng 发表于 2014-4-12 21:25:17

谢谢分享收藏了

cdweng 发表于 2014-4-12 21:25:38

谢谢分享收藏了

KingSolomon 发表于 2014-5-16 23:11:04

很好的新手教程,果断收藏!

eagle 发表于 2018-12-30 11:48:40

新手来了,谢谢分享

进来看看 发表于 2020-5-6 06:53:44

谢谢分享收藏了
页: [1]
查看完整版本: 破解经验交流