首页
社区
课程
招聘
[讨论]暴力破解的一般流程
2012-11-22 16:44 4864

[讨论]暴力破解的一般流程

2012-11-22 16:44
4864
破 顾名思义就是暴力修改程序的代码来达到破解的目的 K>Fo+f  
  当然根据共享软件的注册方式我们可以对症下药 nk1(/~`  
  比如说没有注册的软件有功能限制、使用次数限制、使用日期限制等 FOB9CsMe  
  我们就可以分别对待了!我们只需要解除这些限制自然就达到了破解的目的了! O-wR48Q  
  暴力破解的一般流程 L GK0V!W  
  1、有壳者自然得先脱壳 3RscuD&  
  2、试注册看看有何提示,让我们抓抓小尾巴 $&n!j'C:  
  3、若有提示,用OD动态调试器或者是W32静态调试器查找错误提示 -[`,MZf   
  4、来到错误提示处分析代码找关键CALL、关键跳! 2<fG= I8  
  5、修改代码 <bXfjj6YJ@  
  6、复制保存! $eX; 2  
  如果没有提示,我们可以使用很多断点来完成这些操作 ;wp)E nF  
  现今软件的保护方式有 My:wA;#  
  1、序列号保护方式(注册码=f(机器码/序列号)) f<!eJO:<'  
  2、警告(NAG)窗口 ;I:jd")  
  3、时间限制/次数限制。。 kZ[E493bV  
  4、菜单功能限制 4@4$kro  
  5、KeyFile保护 54-sb~]  
  6、CD-Check (caxl^=  
  7、只运行一个实例 <2fZYt vt  
  一些软件通过把注册码保存在.ini文件、注册表、.dat文件等等方式进行注册验证 ,j:`yB]4,  
  常见断点设置(后面带\"*\"的为常用的) 7YV}F9h4  
  字符串 'P0:1">  
  bp GetDlgItemTextA(W) **** xA& tVQ2!  
  bp GetDlgItemInt M4w,J2_8MK  
  bpGetWindowTextA(W) **** pX8TzmIB0  
  bp GetWindowWord & Xm !i(i  
  bmsg XXXXwm_gettext 1Bp?HyCR  
  对话框 o5LyBUJ  
  bp MessageBeep \GYrP f$  
  bp MessageBoxA(W) **** X!,huB^i  
  bpMessageBoxExA(W) T,@s.v  
  bp DialogBoxParamA(W) <qGxkV  
  bp GreateWindowExA(W) :'`y}'  
  bpShowWindow BTc }Kfae  
  bp UpdateWindow 9U>OeTh(  
  bmsg XXXX wm_command 3D;?X@  
  对于VB的程序用bpMessageBoxA是无法断下来的,bp rtcMsgBox QUeuN?3X\  
  注册表相关 ?;VsA>PV  
  bp RegCreateKeyA(W) e%s1D  
  bpRegDeleteKeyA(W) Fr~\ZL  
  bp RegQueryValueA(W) 5vFM0  
  bp RegCloseKey Sg$\H  
  bpRegOpenKeyA(W) **** kebk f,`p  
  时间相关 Siq]Ii0F;>  
  bp GetLocalTime ep~+]7\  
  bp GetFileTime 'z^'+}iyv  
  bpGetSystemtime `+T 2IPN  
  CD-ROM或磁盘相关 ia3Q1 9r  
  bp GetFileAttributesA(W) k;jl3GV  
  bpGetFileSize VH4wsEH]  
  bp GetDriveType %19~9Tw  
  bp GetLastError  ZB |s/  
  bp ReadFile &"W gO!pzD  
  bpio-h (CD-ROM端口地址) R vs$h&o>|  
  软件狗 Go1xyd:k  
  bpio -h 278R C$ K?4$  
  bpio -h378R @I|kY5'c  
  INI初始化文件相关 9mp`LT  
  bp GetPrivateProfileStringA **** `),U+  
  bpGetPrivateProfileInt ;F*^c )  
  bp WritePrivateProfileString /eU\B^k  
  bpWritePrivateProfileInt w2V:x[  
  文件访问相关 ?Fl O,|   
  bp ReadFile 'AWWdz  
  bp WriteFile 7O%^4D  
  bpCreateFileA **** 55TFBDc  
  bp SetFilePointer w;(=w N\  
  bpGetSystemDirectory _<2{8>EVf  
VB程序专用断点: gaNe\  
  bpx msvbvm60!rtcMsgBox DzA'MX  
  bpxmsvbvm60!__vbaStrCmp [~cz| C#  
  bpx msvbvm60!__vbaStrComp =zrfh-lwH  
  bpxmsvbvm60!__vbaStrCompVar vA Z kT"  
  bpx msvbvm60!__vbaStrTextCmp }X=c|]6i^  
  bpxmsvbvm60!__vbaFileOpen 'r_Fi5[q  
  bpx msvbvm60!__vbaInputFile Unq~lt%2  
  bpxmsvbvm60!__vbaFileSeek Y}q~ Km  
  bpx msvbvm60!__vbaWriteFile 7F]Hq  
  bpxmsvbvm60!__vbaFileClose U7g,@/Qx  
  bpx msvbvm60!rtcFileAttributes T*C F5S  
  bpxmsvbvm60!rtcFileDateTime m!^$_d\%~  
  bpx msvbvm60!rtcFileLen 8:*ZuR|~  
  bpxmsvbvm60!rtcFileLength f w)tWJVD  
  bpx msvbvm60!__vbaVarInt U,fPG/9  
  bpxmsvbvm60!__vbaVarCmpGe ,+C?UW  
  bpx msvbvm60!__vbaVarCmpGt i$ hWX4L  
  bpxmsvbvm60!__vbaVarCmpLe KIWHn_ :  
  bpx msvbvm60!__vbaVarCmpLt SJ;{  Hg  
  bpxmsvbvm60!__vbaVarCmpNe >Lo'H}[pF  
  bpx msvbvm60!__vbaVarTextCmpEq -=UvOzw  
  bpxmsvbvm60!__vbaVarTextCmpGe 87)/dHc  
  bpx msvbvm60!__vbaVarTextCmpGt M\JAB ;A  
  bpxmsvbvm60!__vbaVarTextCmpLe fT?m~W^  
  bpx msvbvm60!__vbaVarTextCmpLt as y:[r"  
  bpxmsvbvm60!__vbaVarTextCmpNe S?D]P'<  
  bpx msvbvm60!__vbaVarTextTstEq d}Y#l}!E6  
  bpxmsvbvm60!__vbaVarTextTstGe #BH]`A J  
  bpx msvbvm60!__vbaVarTextTstGt dg+"G|nr  
  bpxmsvbvm60!__vbaVarTextTstLe W+s3rS2  
  bpx msvbvm60!__vbaVarTextTstLt .~^A!t  
  bpxmsvbvm60!__vbaVarTextTstNe 4>B=k  
  bpx msvbvm60!__vbaVarTstEq <<@F{B7h  
  bpxmsvbvm60!__vbaVarTstGe $HRl:KDdP~  
  bpx msvbvm60!__vbaVarTstGt qR%as0;  
  bpxmsvbvm60!__vbaVarTstLe ZlcEeG  
  bpx msvbvm60!__vbaVarTstLt OU?.}qc<wE  
  bpxmsvbvm60!__vbaVarTstNe rfh`;G5s  
  注意:VB程序仍然可以使用普通API函数,只要函数“最终”CALL了这个函数 D|vck1C5,  
  上面的断点对应VB6程序,如果是VB5程序则将msvbvm60改成msvbvm50即可 G//hZwf0  
  另外还有一类软件通过网络验证、重启验证来判断程序是否注册 hw B9N  
  当然前者一般应用于外挂程序上较多,一般是改网络验证为本地验证达到欺骗远程网络主机的目的达到通过验证! &hM7y7  
  后者也是很常见的,他一般把用户输入的注册码直接或者是通过加密运算后得到的数值保存到文件、注册表中,然后提示用户重启验证是否注册,当然当你重新打开程序的时候他会从文件或者是注册表中读取用户输入的注册码,再通过程序注册算法来进行比照,正确者当然就成为正版,错误的自然就88了,另外以重启验证的软件一般是把注册码保存在注册表或文件中! <Iil*\SC  
  下面来说说解决这类软件的一般方法! 8rLhOA  
  重启验证类软件大致的验证过程。 :=:m4UJb  
  1、运行软件输入注册信息,点注册后。一般软件会提示你重新运行软件,以便验证注册信息的正确性(如FlashGet); |[)pQGw  
  也有的只在你输入正确的注册信息时才有这个提示,不然会告诉你输入的注册信息有问题(此软件就属这类) Q$Sp'  
  2、要破解这种软件,首先是判断一下她把注册信息存在哪里(因为她重启验证时要用)。大致有两种存放方式,第一种是放在注册表里;第二种是放在文件里。(我们可以在输入注册信息,点击确定前,利用监视类软件来查看一下,如FileMon和RegShot等) KppYe9?  
  3、知道她的注册信息的存放地点后,就可以选则相应的API断点,来调试了 PE?ICou  
      访问注册表类常用API 00yWk_w  
  bp RegOpenKeyA 打开一个现有的注册表项 **** rkz84wDx  
  bp RegOpenKeyExA打开一个现有的注册表项 **** b)r;a5"<5  
  bp RegCreateKeyA 在指定的项下创建或打开一个项 wZ=@0al  
  bp RegCreateKeyExA在指定项下创建新项的更复杂的方式 (U\D7ItMG  
  bp RegDeleteKeyA 删除现有项下方一个指定的子项 .9UrWBW\I  
  bp RegDeleteValueA删除指定项下方的一个值 '-3K`[  
  bp RegQueryValueA 获取一个项的设置值 D$E#:[  
  bp RegQueryValueExA获取一个项的设置值 /)<kG(Z  
  bp RegSetValueA 设置指定项或子项的值 s +E4AG1r  
  bp RegSetValueExA 设置指定项的值 _rz\[{)  
  bpRegCloseKey 关闭系统注册表中的一个项(或键) p\Iy)Y2Lf!  
  访问文件类常用API lA`-"  
  bp CreateFileA打开和创建文件、管道、邮槽、通信服务、设备以及控制台 **** a)7&2J  
  bp OpenFile 这个函数能执行大量不同的文件操作 3K/]{ dkD  
  bpReadFile 从文件中读出数据 x@:98P  
  bp ReadFileEx与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调 \Rha7O  
  ====================================================== ETR7% 0$r  
  常用断点(OD中) ucbtPTFYvr  
拦截窗口: - 8jlh  
  bpCreateWindow 创建窗口 '%YTM N@  
  bp CreateWindowEx(A) 创建窗口 s"8z q ;)  
  bp ShowWindow 显示窗口 kpk ^Uw%f  
  bpUpdateWindow 更新窗口 xx?0Ftuq  
  bp GetWindowText(A) 获取窗口文本 Q1H.2JXr  
  拦截消息框: hG}/o&}U  
  bpMessageBox(A) 创建消息框 U/7jK40  
  bp MessageBoxExA 创建消息框 26j-1c!NGd  
  bp MessageBoxIndirect(A)创建定制消息框 #;"lBqxY`  
  拦截警告声: 86o'3G9@  
  bp MessageBeep发出系统警告声(如果没有声卡就直接驱动系统喇叭发声) U.|0y=  
  拦截对话框: ay=f1<a  
  bp DialogBox 创建模态对话框 <|:$_&(  
  bpDialogBoxParam(A) 创建模态对话框 :NWrbfz  
  bp DialogBoxIndirect 创建模态对话框 l{_1`rC'  
  bpDialogBoxIndirectParam(A) 创建模态对话框 (DTkK5/%  
  bp CreateDialog 创建非模态对话框 [xPO'@Y  
  bpCreateDialogParam(A) 创建非模态对话框 Qexv_:C  
  bp CreateDialogIndirect 创建非模态对话框 y Xi$w.gr  
  bpCreateDialogIndirectParam(A) 创建非模态对话框 `V Rt{p  
  bp GetDlgItemText(A) 获取对话框文本 Je~<2EsQ  
  bpGetDlgItemInt 获取对话框整数值 lQer|?#  
  拦截剪贴板: ,SoqVboRl  
  bp GetClipboardData获取剪贴板数据 M'ZA(LVp  
  拦截注册表: }9(:W</}  
  bp RegOpenKey(A) 打开子健 pkEqd"G  
  bp RegOpenKeyEx 打开子健 z T#j.v  
  bpRegQueryValue(A) 查找子健 Y,C3E>}Dq  
  bp RegQueryValueEx 查找子健 CZ_ (IT7  
  bp RegSetValue(A)设置子健 E;^~}  
  bp RegSetValueEx(A) 设置子健 `l8^n0-  
  功能限制拦截断点: mOvwdRKn  
  bp EnableMenuItem禁止或允许菜单项 -Am ~CM  
  bp EnableWindow 禁止或允许窗口 wx|eO[14  
  拦截时间: N\OeWjA F  
  bp GetLocalTime获取本地时间 A12#v,  
  bp GetSystemTime 获取系统时间 Vg)]F+E  
  bp GetFileTime 获取文件时间 T 6g(,xPcL  
  bpGetTickCount 获得自系统成功启动以来所经历的毫秒数 45;{tS.z,B  
  bp GetCurrentTime 获取当前时间(16位) i|5K4Puu  
  bpSetTimer 创建定时器 $(ugnnJ*  
  bp TimerProc 定时器超时回调函数 [p+6HF  
  拦截文件: )h0F'MzW  
  bp CreateFileA创建或打开文件 (32位) R&BbXSIDX  
  bp OpenFile 打开文件 (32位) 3rEBG0cf]  
  bp ReadFile 读文件 (32位) 1YmB2h[Z  
  bpWriteFile 写文件 (32位) &>I4-D[  
  拦截驱动器: ]:B|_| H  
  bp GetDriveTypeA 获取磁盘驱动器类型 +SGM3tY  
  bpGetLogicalDrives 获取逻辑驱动器符号 fdIk{o  
  bp GetLogicalDriveStringsA获取当前所有逻辑驱动器的根驱动器路径 2YD;Gb[8  
  ★★VB程序专用断点★★ sGjYL>*  
  bp __vbaStrCmp 比较字符串是否相等 Z }(,OZh  
  bp__vbaStrComp 比较字符串是否相等 ^NB @wuf7  
  bp __vbaVarTstNe 比较变量是否不相等 =k#SQ/@  
  bp __vbaVarTstEq比较变量是否相等 ZzA4iT=KO  
  bp __vbaStrCopy 复制字符串 PaPQ|Pwz  
  bp __vbaStrMove 移动字符串 &K@2kq,  
  bpMultiByteToWideChar ANSI字符串转换成Unicode字符串 |7Z7_YWs  
  bp WideCharToMultiByteUnicode字符串转换成ANSI字符串

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Dstlemoner 2012-11-22 16:49
2
0


为啥结尾 全是乱七八糟的 字符、、、、你要 加花过免杀 啊?
雪    币: 5052
活跃值: (2602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
longloo 2012-11-22 17:19
3
0
很明显,是复制别人的网页的吧
游客
登录 | 注册 方可回帖
返回