分享

易语言程序破解思路

 yaaobai 2016-06-17
易语言程序破解思路
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单步走,要有点耐心,走到程序领空 就可以搜索字符串,直接定位破解核心了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多