- 易语言程序破解思路
- 2012-07-16 1 个评论
- 收藏 我要投稿
- 首先要确认程序为易语言编写的程序,确认方法:
1、如果PEID查得是VC++ 6.0且入口OEP是3831 2、查找字符串有E的两个库(其中一个为krnln库) 3、有.eCode区段(不一定有) 确认为易语言编写的程序后,破解的方法有: 1.Ecode法(对于有Ecode区段的就用这种方法): 我们用OD加载目标程序 ,F9运行程序,再Alt+E打开模块窗口,找到krnln模块,点击右键,弹出对话框
点查看内存,找到ECODE段,在ECODE段F2下断,然后然后填入任意注册码点击注册
OD中断在按钮事件上
到这里后F8单步走,马上到达破解的核心处了。当然此时也可以查找字符串直接定位破解核心。 2.工具辅助法 启动E-Debug Events,打开目标程序,输入任意注册码点注册可以见到如下图(如果无法获取按钮事件请在E-Debug Events改变编译方式即可)
我们可以看到找到的按钮事件地址0040A0BD和Ecode法是相同的,到这里后F8单步走,马上到达破解的核心处了。当然此时也可以查找字符串直接定位破解核心。 3.特征码法(脚本法) 易语言的这种查找方法,同样适合有壳的程序,其他的就必须脱壳后再继续操作了. OD载入后,就F9运行程序吧,当程序运行后,ALT+E打开模块窗口, 选中易语言的核心库krnln,双击进去
然后CTRL+B,查找FF 55 FC
查找到的这个CALL就是了,F2下断吧,现在输入必须的内容后,单击对应的按纽吧
看,断下了吧,下面就F7跟进吧,就来到按纽事件处了 同样,写个脚本,保存为文本文件,运行即可 gpa"GetProcessHeap","kernel32.dll" cmp $RESULT,0 je err bp $RESULT run run run bc $RESULT rtu find 10001000,#FF55FC5F5E895D??8945# bp $RESULT find eip,#FFE0# cmp$RESULT,0 je err bp $RESULT run bc $RESULT sto MSG "按纽事件查找完毕!" ret err: MSG "脚本运行错误!请检查错误后再继续运行脚本!" ret www. 4.API断点法(对于程序有注册对话框的就用这种方法) 注册对话框API一般为MessageBoxA、MessageBoxW、MessageBoxExA、MessageBoxExW等,命令框输入BP MessageBoxExA中断如下:
堆栈框下拉看到返回程序领空地址,点击反汇编窗口,Ctrl+G,输入返回地址0040A292如下图:
右键点击,弹出对话框,选择超级字符串参考(此功能需要加载一插件),搜索如下图:
直接定位破解核心,分析即可。 5.查找固定字符串(\\.\physicaldrive0)法 OD加载程序,F9运行程序,然后Alt+E打开模块窗口,在krnln的模块双击进去,进去后在反汇编窗口搜索字符串 ,找到\\.\physicaldrive0 然后双击进去,在这一行下断,重新加载程序,F9,程序中断,然后F8单步走,要有点耐心,走到程序领空 就可以搜索字符串,直接定位破解核心了。
|