悟夜叉个人博客 技术专题 易语言程序分析:各事件的特征码Ⅰ

易语言程序分析:各事件的特征码Ⅰ

前言

之前也有说过超过9成的外挂是由易语言制作的,网络验证程序也有6~7成是易语言制作的,所以这几期专门针对易语言来做系列教程。在讲NOP填充跳过本地验证的时候,讲到过易语言的按钮特征码 ff 55 fc 5f 5e ,本篇也是对各事件的特征码做一个扩展。

在学习逆向的过程中,不能心急。如果只是复刻我的操作,那换一个程序你就不会了,一定也要稍微的了解里面的原理。也欢迎大家相互交流,互相提升技术水平。

正文

组件1:【 时钟 】

在易语言中编写一个 时钟demo,这里有几个关键词需要了解

时钟:易语言用作计时的组件

时钟周期:时钟定时的长短。比如,以1秒为一周期,时钟周期=1000;以2秒为一周期,时钟周期=2000

周期事件:在每一个时钟周期需要执行的事件,也就是需要执行的子程序

来设计一个软件打开的时间,以秒为单位,那么要设置的时钟周期就是1000

那通过什么来进行累加呢,总有一个变量一个数值来统计

所以添加一个该窗口下的变量“打开时间”,定义为整数型,然后每过1000毫秒(1秒)+1

运行程序之后,发现程序已经能自动的变换打开的时间了

编译成 .exe 程序,利用 OD 进行反编译,但我们并不知道【上图】这段能改变数值的代码在哪里。这个时候我们就需要用到表达式,按下 Ctrl + G

时钟事件表达式:SetTimer注意大小写,一个字母错了都搜索不到

定位到这一段,一直到 retn 0x10 这就是时钟事件

不管你设置是多少毫秒,都是要经过这段代码的

双击 mov edi ,edi 将内容改成 retn 10,需要注意的是不是随便 retn,你要看段尾是 retn 几,代码就这么多,一眼就可以看到 retn 位置了

下断点运行,发现时钟已经被我们干掉了

总结

SetTimer是什么?

SetTimer是一种API函数,位于user32.dll中。你想每隔一段时间执行一件事的的时候,你可以使用它。 使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟。

这里使用的思路是废掉 SetTimer,除了函数第一行使用 retn 0x10之外,还可以改跳转,或是直接NOP掉函数调用,甚至可以用 KillTimer 代替。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部