delphi - xp扫雷外挂制作

delphi - xp扫雷外挂制作

ID:15372228

大小:416.50 KB

页数:7页

时间:2018-08-02

delphi - xp扫雷外挂制作_第1页
delphi - xp扫雷外挂制作_第2页
delphi - xp扫雷外挂制作_第3页
delphi - xp扫雷外挂制作_第4页
delphi - xp扫雷外挂制作_第5页
资源描述:

《delphi - xp扫雷外挂制作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Delphi-XP扫雷外挂制作.技术交流,DH讲解.本来之前就在写这个文章,还写了War3挂的教程,后来因为一些事就没有弄了.现在过年在家又没有事就继续把这个写完吧.哈哈.不要以为写个挂很容易,要想写个挂肯定要了解游戏呀.我们现在来了解下地雷是怎么产生的?其实只是我自己猜想的,毕竟这个游戏不是我写的...1用户选择了多大的棋盘,多少地雷后棋盘应该是用一个二维数组来存储的,地雷数肯定是用一个全局变量来存储的.这点儿有异议没有?没有我就继续往下说了...2生成地雷,肯定是随机的,那么一定会调用Rand函数咯.a.首

2、先判断地雷数是否为0---是0->结束生成过程     

3、  不是0     

4、b.Rand产生X,Rand产生Y                                           

5、                                                                c.判断二维数组中(X,Y)的值是否为有雷值---不是-->转到b     

6、    是     

7、d.雷数减一---------->转到a整个流程看懂了吧.那么我们来实际分析呀,ODT

8、ime,从上面看我bpRand然后进入步骤b,只要到了步骤c我们就能知道雷的内存区域了,是吧?我们遍历区域就知道哪些格子是雷了塞.下断点:当断点断下来了后 我们可以看到堆栈窗口:选中第一个,然后回车.返回:viewsourceprint?101003940 /$ FF15B0110001call   dwordptr[<&msvcrt.rand>]      ;[rand201003946 

9、. 99           cdq301003947 

10、. F77C2404    idiv   dwordptr[e

11、sp+4]40100394B 

12、. 8BC2         mov    eax,edx50100394D . C20400      retn   4有点儿基础的朋友可以看出来,这里是它写了一个函数,先Rand一个数,然后整除另一个数,返回取余的结果.其中这2个数是什么,上面那图我们看见2个返回到,是吧?那么选中第二个回车呗.下断,单步走:我们就会发现压入栈的是1E=29,那么应该是30个,我们看一下是行还是列.也就是这个这个函数传入的参数是行列数,哈哈因为这个C++的,所以PUSH那一下就是在传参数.好

13、的看具体参数:现在可以看出来,rand函数的参数用的返回地址,$010036D2,而rand出来值再对行列数取余,也就是[esp+4]就是这个30,这样就保证,最后这个值肯定小于30咯.viewsourceprint?01010036C7 

14、>/FF3534530001push   dwordptr[1005334]             ; 将列数压入栈,发现存列的内存地址了02010036CD 

15、.

16、E86E020000  call   01003940                        ; 

17、返回X03010036D2 

18、.

19、FF3538530001push   dwordptr[1005338]             ; 将行压入栈,发现存行的内存地址04010036D8 

20、.

21、8BF0         mov    esi,eax                        ; esi就是X05010036DA 

22、.

23、46           inc    esi                             ; 因为rand是0~n-1,所以这里就要+106010036DB 

24、.

25、

26、E860020000  call   01003940                        ; 返回Y07010036E0 

27、.

28、40           inc    eax08010036E1 

29、.

30、8BC8         mov    ecx,eax                        ; ecx就是Y09010036E3 

31、.

32、C1E105      shl    ecx,5                          ; 将Y*32,这样就转换成一维数组10010036E

33、6 

34、.

35、F68431405300>test   byteptr[ecx+esi+1005340],80  ; 我们这里发现数组的基址了.$80就是有雷咯11010036EE 

36、.^75D7        jnz    short010036C712010036F0 

37、.

38、C1E005      shl    eax,513010036F3 

39、.

40、8D8430405300>lea   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。