本帖最后由 ximo 于 2014-10-28 11:02 编辑
这个cm依旧是易语言的。。。可是我对易语言非常的不感冒,所以一直都没啥劲去弄。特别是用了什么大型公开算法的更是如此了。
说一下这个cm的特色吧,作者对SEH把握得非常好,还利用了栈溢出(?)的技术,使得安全性大大的提高了。就这点来说给一个好评。
首先,如果是按照正常的方法,下什么按钮事件断点的话,是无法到达真正的处理事件的。实际上,它的验证事件是在异常处理中进行的。
首先,它会在0040A27D设置一个硬件执行断点,如果程序没有被调试中的话,经过这一步的时候,就会产生单步异常,进入异常代码处理段:00408EFE,单步异常的代码为80000004,搜一下这个常数可以找到很多地方的。如果是使用OD1.10进行调试的话,可能需要手动修改一下OD才行了。
接着,就是一堆验证,与判断。很长,就不解析了。然后如果验证通过的话,就会到达这个地方:
[Asm] 纯文本查看 复制代码
004099B2 68 07000000 push 7
004099B7 68 76A04000 push 0040A076 ; 成功提示入口点
004099BC E8 13A2FFFF call 00403BD4
004099C1 |. 8945 DC mov dword ptr [ebp-24],eax
004099C4 |. 8965 D8 mov dword ptr [ebp-28],esp
这里会运算得到成功的地址的入口点,然后写入数据中。
然后便会调用这个地址。这大概算是栈溢出的运用吧。
可惜的是存放成功提示的字符串地址:[0047D475] 中的数据是通过DES(?) 进行动态解密的,所以我就直接给Patch上去了,可能会不通过,就当碰碰运气吧。
|