想了想,还是发到这个版块来了,如果不合适,就辛苦版主了。因为这软件很久不更新了,难度也不是很大,适合初学者练手,嘿嘿。
【文章标题】: 黄河Flash播放器算法分析
【文章作者】: gtboy
【作者邮箱】: lywbff@163.com
【软件名称】: 黄河Flash播放器
【下载地址】: 自己搜索下吧,很久不更新了
【保护方式】: Aspack,SN
【使用工具】: od
【操作平台】: xp sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一款08年的软件,作者已经不更新了。flash现在随便一个播放器就可以搞定,可能这是作者退出的原因吧。在pyg上看到有个SMC教程用这个软件做例子,就下载下来分析下。
软件是明码比较,可以很容易做内存注册机,为了锻炼下自己,跟进算法call分析
软件用aspack加壳,esp定律到入口,看样子是个Delphi的程序。超级字串参考,查找注册,有注册成功和注册失败,双击来到关键点。大家要写程序的时候一定要隐藏信息啊。
至于明码比较这个问题就不说了,现在的国产软件已经很少了,可喜可贺。因为是没脱壳分析,我是在004BBB9D算法call这行设置了硬件执行断点,方便下次调试。运行程序,注册,软件提示识别号ID214592083,输入假码,确定,断在硬件断点上。
F7进入004BBB9D E8 1ADFFFFF CALL 004B9ABC 开始分析。
算法不是很复杂,不知是编译器优化还是自己修改了,或者是我功力不行,初看的时候感觉挺难懂的,总算堆栈中来回窜,就想跟踪每个变量,累而且看不懂。注释也乱七八糟的,后来多看了几遍,就明白了。我的理解不是做地址用,而是用了bl做循环变量,al,dl,si等,都只用了低位寄存器。
写个c代码,我的编程很烂很不规范。不算是通用的keygen,算法上的确是不行的。
因为sn是30位的,所以ID第一次从D开始取完后多加个0x1然后继续ID,凑够30位。shift+F2断点很有用,当然用F2也可以完成分析工作。
考虑了一会,这个ID不会用c语言构造,只好用ue生成ID进行验证,但是只有前
折腾了一早上,还是不对,还望前辈们有空写个keygen让我学习下
对了,软件的注册信息保存在安装目录下的hhflash.ini中
--------------------------------------------------------------------------------
【经验总结】
1.软件要隐藏提示信息
2.不能明码比较,防止内存注册机
说说算法跟踪,要有爱,要有耐心,呵呵。仔细分析,就能看出算法了。不能盯得太细,高度高点,多前后联系,算法很快就呈现出来了。
算法分析还要多多练习啊,写了半天,keygen还是没写出来,太菜了。
--------------------------------------------------------------------------------
【版权声明】: 没有版权,嘿嘿。小菜鸟一只,还望大家多多指点。
2010年03月21日 10:38:20