- 这所谓“易语言特征”,在本集视频里就是讲的时钟的失效、创建窗体和弹窗的代码特点、退出的代码。
时钟失效
在OD的反汇编窗口中,按Ctrl+G,输入“SetTimer”。

随后,OD会来到这里

把段首改为retn 0x10。

其实上面的修改就是把最后一句弄到最前面来,从而让这段代码什么都没干,这样时钟就失效,不会被设置。
当然,如果时钟设置了,在这样修改就不行了。
创建窗体代码的特征
这就是创建窗体的代码:

怎么验证这就是呢?作者的方法是在开始处下断点,这样每次窗体显示时都会断下来。
作者让多看看,熟悉它的样子。
我看它的特征是:10个push,接上一个move,再接一个call。根据在第一期讲的push窗体法中的内容,得有一个push是这样的
push 0x10001
....
push 0x5XXXXXX
弹窗的代码特征

和创建窗口的代码类似,都是10个push,接上一个move,再接一个call。
但不同之处在于:
*弹窗没有
push 0x10001
- 弹窗倒数第二个push的是要显示的文字。
退出代码
通过FF25找到易语言体,在下面的jmp里,一个一个按回车键跟随过去看看是不是调用了 ExitProcess

关于OD的小知识
- 有时候,在OD中明明用鼠标想选这一行,但是却选中了另一行。这可以通过Ctrl+A来解决。
- 当在反汇编窗口中通过按回车键跟随过去后,可以按减号键来让反汇编窗口回到原来的位置。
-
在OD的模块窗口(工具栏中点击“e"的图标)可以查到这个程序加载的初始地址
模块窗口
代码
创建窗口的
0040100E |. 68 02000080 push 0x80000002
00401013 |. 6A 00 push 0x0
00401015 |. 68 01000000 push 0x1
0040101A |. 6A 00 push 0x0
0040101C |. 6A 00 push 0x0
0040101E |. 6A 00 push 0x0
00401020 |. 68 01000100 push 0x10001
00401025 |. 68 0C000106 push 0x601000C
0040102A |. 68 0D000152 push 0x5201000D
0040102F |. 68 03000000 push 0x3
00401034 |. BB A0104000 mov ebx,窗体.004010A0
00401039 |. E8 54000000 call 窗体.00401092
0040103E |. 83C4 28 add esp,0x28
创建弹窗的代码
0040100E |. 6A 00 push 0x0
00401010 |. 6A 00 push 0x0
00401012 |. 6A 00 push 0x0
00401014 |. 68 01030080 push 0x80000301
00401019 |. 6A 00 push 0x0
0040101B |. 68 00000000 push 0x0
00401020 |. 68 04000080 push 0x80000004
00401025 |. 6A 00 push 0x0
00401027 |. 68 A8664600 push 弹窗.004666A8
0040102C |. 68 03000000 push 0x3
00401031 |. BB D0114000 mov ebx,弹窗.004011D0
00401036 |. E8 54000000 call 弹窗.0040108F
0040103B |. 83C4 28 add esp,0x28
网友评论