首页
社区
课程
招聘
[原创]扫雷逆向之详解怎么找基址、怎么找call;CE,OD的使用
发表于: 2011-3-9 20:05 33081

[原创]扫雷逆向之详解怎么找基址、怎么找call;CE,OD的使用

2011-3-9 20:05
33081

教程用到的所有工具都打包了,全部是无毒的,我自己用的也是这个

1.CE找基址

  启动扫雷,启动CE,
  点击CE上那一闪一闪的电脑样子的图标,
  弹出一个附加进程的窗口
  选择你游戏进程的名字,扫雷是"winmine.exe"....(一般在进程在最下面,扫雷默认是这个名字,你要是改了扫雷的文件名就选择你改的名字)
  

  首先来找插旗数的基址:
  
  可以看到,现在插旗数的数量是10
  所以我们在CE里输入10,点击首次扫描
  扫描出好多结果,
  我们在扫雷上随便插一下旗,让插旗数减少
  现在插旗数是9
  所以我们在CE里输入9,点击再次扫描
  我们在扫雷上随便插一下旗,让插旗数减少
  现在插旗数是8
  所以我们在CE里输入8,点击再次扫描
  我们在扫雷上随便插一下旗,让插旗数减少
  现在插旗数是7
  所以我们在CE里输入7,点击再次扫描
  反反复复的这样搜索,直到搜到我们想要的扫雷插旗数的内存地址
  下面来测试下我们找到的地址正不正确,双击我们找到的地址,就把地址移到下面的操作区域了,我们在数值的地方双击,随便输入个数值,比如99,回到扫雷,再插个旗,现在看到,插旗数是98了,这就说明我们找对了,
  旗数基址:01005194
  呵呵,下面继续
  
  
  下面我们来找扫雷的时间:
  
  开始玩扫雷吧,通过观察我们可以发现,扫雷的时间是不断增多的,
  点击CE的新扫描,由于扫雷的时间不固定,所以我们在扫描类型上选择"未知初始化数值",点首次扫描
  由于扫雷的时间是不断增多的,所以我们在扫描类型上选择"增加的数值",点再次扫描
  由于扫雷的时间又增多了,所以我们在扫描类型上选择"增加的数值",点再次扫描
  由于扫雷的时间又增多了,所以我们在扫描类型上选择"增加的数值",点再次扫描
  由于扫雷的时间又增多了,所以我们在扫描类型上选择"增加的数值",点再次扫描
  直到出现我们想要的值,我们看到,有一个地址的值和我们扫雷的时间是一样的,就是那个了,双击它.把它移到下面的操作区域,在数值那随便输入个数值,比如1,可以看见,扫雷窗口上的时间也跟着改变了,呵呵,成功了吧,但这个数值还在不断增加,烦死了,这个地址前有个锁定的选项,把锁定的选项勾上,把时间锁住,时间就不会一直增加啦
  扫雷的时间基址:0100579C

  下面找扫雷开局按钮判断
  找这个开局按钮的判断有好几种方法
  一,开局按钮的判断肯定是个逻辑型变量啦,一般的话都是0代表假,1代表真,所以我们在还没有开局的时候输入0搜索,开局后输入1搜索,重复几次,直到找到开局的判断地址
  二,通过"未知初始化数值"和"更改的数值"搜索,在还没开局的时候搜"未知初始化数值",开局后搜"更改的数值",再重新开局,继续搜"更改的数值",直到找到开局的判断地址
  开局按钮判断基址:001005164
  把找到的地址记下来,后面找开局call时要用到
  
  

CE的使用到这基本上就说完了,CE的使用其实很简单,OD的使用才有一定的难度,下面开始使用OD

2.OD找call

  扫雷开局call
  
  启动扫雷,启动OD,
  点击OD的 文件-附加-选择扫雷的进程
  接着在OD的命令行框框里输入DW 001005164,下个开局按钮判断基址的硬件写入断点,回车键
  只要向内存001005164写入数据就会被断下来,因为开局肯定会向开局判断写入数据的嘛
  回到扫雷,重新开局,马上就被OD断下来了
  按ctrl+F9,执行到返回
  我们会看到很多个call,我们要的call是被断下来的地方上面的那个call,记住,是上面的那个call
  010014D6  |.  E8 9F210000   call    0100367A
  现在打开call测试工具来测试这个是不是我们要的call吧
  打开call测试工具,点击那个电脑样子的图标,附加扫雷的进程
  输入call    0100367A,点击创建远程线程,测试下call是否正确
  哈哈,扫雷没有出错,并且重新开局了是吧,运气真好,一个就找到了扫雷开局call

  找扫雷秒杀call
  
  秒杀扫雷是最爽的,直接调用扫雷成功的call,很黄很暴力
  扫雷成功会弹个对话框,我们就下个对话框的断点
  命令行输入bp DialogBoxParamW
  由于会弹出两个对话框,所以会被先后断下来两次,并且有两个call,我们就是要找到这两个call
  先玩胜利一盘扫雷,使OD断下来,断下来后按ctrl+F9,执行到返回,点击扫雷的确定按钮,又被断下来了,按ctrl+F9,执行到返回,接着我们就看见了一个call,
  01003505  |.  E8 77E6FFFF   call    01001B81
  这个call有一个参数,mov     dword ptr [eax], ecx

  测试下这个call是否正确,
  打开call测试工具,点击那个电脑样子的图标,附加扫雷的进程
  输入
     mov edx,0
     mov [010056cc],edx
     call 01001b81
  edx是扫雷所花的时间,点击创建远程线程,扫雷弹出个对话框,没有出错,说明我们找的这个call是正确的
  好,我们再找另一个call,同样是断下来后按ctrl+F9,执行到返回,接着我们就看见了一个call,
  0100350A  |.  E8 9BE6FFFF   call    01001BAA
  打开call测试工具测试下是否正确,
  输入
    mov edx,0
    mov [010056cc],edx
    call 01001b81
    call    01001BAA
  创建远程线程
  结果没有出错,是正确的,
  呵呵,扫雷的秒杀call也被我们轻松找到了

  
  
  扫雷点击call(鼠标左键):
  
  大家自己练习一下,看看能不能自己找到,
  下面贴出我找到的,对比下你找是是否正确
     push 2  //纵坐标
     push 4  //横坐标
     call  01003512

  鼠标插旗call(鼠标右键):
  
     这个是留给各位的作业

END
  

                                                作者QQ:2479298(此处勿改动,3Q)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
不错的帖子,写得很仔细。学习!
其实CE真的很好用,那个自带的练习软件非常棒。
2011-3-9 22:37
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
确实写得不错~
2011-3-10 09:32
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
拿扫雷做逆向,很没趣,基本上是一些学生的作业
2011-3-11 21:40
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
5
把扫雷的源代码逆向出来
上传的附件:
2011-3-13 14:05
0
雪    币: 1
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了
2019-8-25 23:19
0
游客
登录 | 注册 方可回帖
返回
//