查看: 2857|回复: 9

[原创图文] OD基础使用

[复制链接]

3

主题

8

帖子

1

精华

初级会员

Rank: 4

学币
39
荣耀
0
rank
0
违规
0
发表于 2019-11-6 13:14:08 | 显示全部楼层 |阅读模式
OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目l前最强大的调试工具。基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug(摘至百度)


OD目前主要用于逆向32位程序,由于我所掌握的知识也不多,所以我将我所知道的关于OD的使用方式都展示出来
OD界面介绍:
396495dc23f48099a6.png
237135dc240ae7c4ea.png

了解了最基本的界面,接着,我使用一个小游戏,通过寻找一个功能CALL了解OD的最基本的使用,这里会用到CE工具进行地址的寻找以及代码注入,这里也会进行简单介绍
游戏:热血江湖(32位)
功能:自动杀怪
思路:选中怪物-->写入地址-->打怪CALL访问地址-->实现打怪


一、CE查询地址
1、 打开CE(我所使用的CE是CE6.7版本),附加游戏进程
311285dc2433b913da.png
2、在没有选中怪物时,存放怪物对象的地址内的值应该为NULL,即为0,所以搜索0值(当然结果多到爆)
61775dc243849e4f1.png

3、或者选择未知初始值(可能存在选择了其他对象)

4、通过反复选择怪物,缩减可疑值的数量
266175dc247966b743.png
最后,我取得了这3个可疑的值

4、附件到进程,查看改变该内存值的语句,排除干扰值(按经验而言,选中怪物的时人物,应该是一个对象,所以很大可能是传入怪物下标的那个内存地址)
721285dc2485341c91.png

基本可以确定是该地址
5、分别记录访问该地址的语句和改写该地址的语句
注:查看访问时应该选择攻击动作使用时访问的那几段代码
838855dc248e99de77.png
同时,寻找到选中对象的基址,方便程序重启后继续调试
382195dc24966dccf4.png
绿色的地址即基址(基址 + 偏移 ====》 [0427EBA0]+1A64)
结束附加,打开OD,进行动态调试


1、附加游戏
点击文件,选中附件,找到游戏进程
进入附加状态后,点击运行,让游戏先运行起来,同时,按Ctrl + G打开转到
65265dc24aac9740a.png
跳转到刚刚CE收索到到地址
// 改写
00544575 - 8B 46 0C  - mov eax,[esi+0C]
00544578 - 8B 0D 243AE602  - mov ecx,[Client.exe+2A63A24]
0054457E - 89 81 641A0000  - mov [ecx+00001A64],eax <<
00544584 - EB 34 - jmp Client.exe+1445BA
00544586 - C7 85 F8D4FFFF FFFF0000 - mov [ebp-00002B08],0000FFFF

EAX=00001CEA
EBX=0019A5F0
ECX=43795350
EDX=001930C4
ESI=54CAB2F0
EDI=43795350
ESP=00197A7C
EBP=0019A5E0
EIP=00544584



// 访问
00543AB6 - E9 71630000 - jmp Client.exe+149E2C
00543ABB - 83 3D CC9D2401 00 - cmp dword ptr [Client.exe+E49DCC],00
00543AC2 - 8B 87 641A0000  - mov eax,[edi+00001A64] <<
00543AC8 - 89 85 78FEFFFF  - mov [ebp-00000188],eax
00543ACE - 0F85 AF5D0000 - jne Client.exe+149883

EAX=00001CEA
EBX=0019A5F0
ECX=00000017
EDX=00000082
ESI=00000000
EDI=43795350
ESP=00197A7C
EBP=0019A5E0
EIP=00543AC8

00545C58 - 85 C0  - test eax,eax
00545C5A - 0F84 233C0000 - je Client.exe+149883
00545C60 - 8B 87 641A0000  - mov eax,[edi+00001A64] <<
00545C66 - 3D 983A0000 - cmp eax,00003A98
00545C6B - 73 1B - jae Client.exe+145C88

EAX=00001CEA
EBX=0019A5F0
ECX=43795350
EDX=0000002E
ESI=00001CE6
EDI=43795350
ESP=00197A7C
EBP=0019A5E0
EIP=00545C66

00545C98 - 68 50040000 - push 00000450
00545C9D - FF D0  - call eax
00545C9F - 89 B7 641A0000  - mov [edi+00001A64],esi <<
00545CA5 - 89 B7 801A0000  - mov [edi+00001A80],esi
00545CAB - 8B 04 B5 283AE602  - mov eax,[esi*4+Client.exe+2A63A28]

EAX=00000001
EBX=0019A5F0
ECX=B5B43C40
EDX=001930C4
ESI=00001CE6
EDI=43795350
ESP=00197A7C
EBP=0019A5E0
EIP=00545CA5


426645dc24b5c35e67.png
寻找该处后,按下F2在该处进行下断,进入游戏,选中应该怪物进行打怪的操作,查看能否断下来
119765dc24baad0fd7.png
成功断下后,按Ctrl + F9,执行到返回,返回到上层CALL
365175dc24be11f130.png
断下该处,发现这里在没有进行操作的时候也会断下,说明这里并非是打怪的CALL,排除,按‘-’号键返回之前的代码或是选中状态栏的'B'进入到断点处,进入断点
368135dc24c4e8d279.png
114365dc24c607e244.png
取消这里段点,同样的方式来测试其他的地址


测试完成我发现,之前的思路可能是不正确的!!!我发现游戏里,打怪应该是调用了攻击这一个动作来进行操作,所以需要先得到动作列表的地址

获取动作基址的方式与之前选中怪的方式类似,检索鼠标是否选中动作,向上回溯出列表基址,我在这里就不做操作,直接贴出我寻得的基址
0085324B   .  8B94BB 3C0400>MOV EDX, DWORD PTR DS:[EBX+EDI*4+0x43C]  ;  动作列表
攻击 ===》 [02E3BD58]+0x43C+4*2


这里说一下:逆向一个值的由来,有时候需要向上回溯多层才可能得出,所以需要一定的耐心

查找访问该地址的地址
最后在OD内寻得的代码是
<blockquote>008544ED   .  8B48 54       MOV ECX, DWORD PTR DS:[EAX+0x54]         ;  可能是动作的ID
使用代码注入器测试
=========OK ============
MOV EAX, 0x2C8FD710 //动作对象
MOV ECX, DWORD PTR DS:[EAX+0x54]
MOV EDX, DWORD PTR DS:[0x125256C]
PUSH ECX
MOV ECX, DWORD PTR DS:[EDX+0x28C]
CALL 00713990



总结:
自动打怪的操作:
选中怪物 -----》 向内存内赋值(怪物下标)
使用动作对象 -----》 利用动作使用CALL,传递动作对象地址进行使用

另外的话:
这是我在这个平台第一篇帖子,其目的是锻炼自己,同时也希望这篇帖子所介绍的内容能让大家熟悉OD以及这系列逆向工具的使用,OD更加详细的介绍我之后会补上,这上面都是一些特别基本的操作,而且并不全面,但是希望更多的实践能让我,也让大家对这些工具的使用更加得心应手。





评分

参与人数 1学币 +1 收起 理由
退隐猫九_ + 1 感谢您的热心分享,学逆向论坛有你更精彩!.

查看全部评分

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2019-11-7 08:55:47 | 显示全部楼层
写的不错,很认真,加个精华,感谢分享!

点评

谢谢大佬指点  详情 回复 发表于 2019-11-7 17:26
论坛交流群:672619046

3

主题

8

帖子

1

精华

初级会员

Rank: 4

学币
39
荣耀
0
rank
0
违规
0
 楼主| 发表于 2019-11-7 17:26:41 | 显示全部楼层
xuenixiang 发表于 2019-11-7 08:55
写的不错,很认真,加个精华,感谢分享!

谢谢大佬指点
发表于 2019-11-8 12:13:32 | 显示全部楼层
支持一下
回复 打印

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 4

学币
60
荣耀
0
rank
0
违规
0

    发表于 2019-11-17 07:27:10 | 显示全部楼层
    写的不错,很认真,加个精华,感谢分享!

    1

    主题

    33

    帖子

    0

    精华

    中级会员

    Rank: 8Rank: 8

    学币
    136
    荣耀
    0
    rank
    702
    违规
    0

      发表于 2019-12-16 18:43:26 | 显示全部楼层
      看了LZ的帖子,我只想说一句很好很强大!

      1

      主题

      2

      帖子

      0

      精华

      初级会员

      Rank: 4

      学币
      5
      荣耀
      0
      rank
      0
      违规
      0

        发表于 2020-3-7 00:47:04 | 显示全部楼层
        OD载入 下断 运行到call游戏就退出了 请问你是怎么解决的

        1

        主题

        21

        帖子

        0

        精华

        初级会员

        Rank: 4

        学币
        33
        荣耀
        0
        rank
        0
        违规
        0

          发表于 2020-3-11 09:50:43 | 显示全部楼层
          结合CE好评论,很棒的文章

          0

          主题

          12

          帖子

          0

          精华

          初级会员

          Rank: 4

          学币
          180
          荣耀
          0
          rank
          0
          违规
          0

            发表于 2020-3-14 09:55:13 | 显示全部楼层
            感谢分享
            回复 打印

            使用道具 举报

            1

            主题

            62

            帖子

            0

            精华

            VIP

            Rank: 16

            学币
            160
            荣耀
            1
            rank
            0
            违规
            0

              发表于 2020-3-24 09:11:25 | 显示全部楼层
              感谢分享,我会认真学习的!
              快速回复 返回顶部 返回列表