网络上广泛流传的EDGE大侠老版本的,18k的那个,是加壳的,用OD脱的。
下载新版本那个大的exe是没有壳的(壳的二进制还在),不需要动态分析,除了声音视频相关的函数(大概前六七个函数),剩下总共几个函数,都很短,而且基本是一个函数最多调用两个有用的,四五级调用就结束了。
因为脱壳后运行地址还是0x007F0000偏移0x00015526。 正确地址应该修正为0x00800000+0x00005526; 这样exe能直接小64k;换句话说exe还是带着壳和解压后的真正exe的,只是OEP改为了真正的startup,然后运行main,然后winmain,然后消息循环。消息循环里只有四五个控件的处理,掉函数的基本就那一个。所以这个大exe不是EDGE大侠直接发出来的,是有人脱壳的,而且脱壳后没有收缩。
新版本的这个上百k的是别人脱壳修改的版本和18k的那个版本不是一个版本。里面月份从随机数改成了固定的'D' 也就是12月。还有就是产生随机数的代码发生了变化,我替换为math.h的C51版本和ARM版本测试了一下,生成的序列号不能用的概率还是相同的。其它代码二进制一模一样。因为keil的uv4.dll中没有此随机数的代码,所以不知道EDGE大侠为什么修改了随机数的算法。随机数是用的69069作为被乘数。因为不是汇编级修改的,是C级别修改的,所以应该是EDGE大侠原版就改成了固定12月和新随机数的。
整个注册机代码在C51下编译通过,并且执行正确的情况下,大小为6.4k;而在STM32F103的情况下编译通过并且执行正确的情况下为6.2k,里面的整数运算我已经尽量的位数短了。看来在32数**算和大量移位的场合,51比ARM还是有一些差距。
18k的版本我脱壳后可以运行,不收缩的版本,不报毒。收缩的版本就报病毒了。所有代码我都看了,确认是没有病毒功能。不知道360怎么还判断出病毒的类型是特洛伊的。
另外,虽然注册机使用了随机数,但是这个注册机生成的序列号仍然有规律,我感觉如果想封,不和服务器通讯的情况下也是能做到的。
另外声明一下,我不用盗版的,抵制盗版,人人有责。
研究仅供学习。keil是一个伟大的公司,EDGE大侠我不认识,不便评价。
|