学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

74

积分

0

好友

3

主题

[原创图文] OD基础使用

 
发表于 2019-11-6 13:14:08 | 查看: 11017| 回复: 10
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.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
已有 1 人评分学币 理由
退隐猫九_ + 1 感谢您的热心分享,学逆向论坛有你更精彩!.

总评分: 学币 + 1   查看全部评分

发表于 2019-11-7 08:55:47
写的不错,很认真,加个精华,感谢分享!
秃子 发表于 2019-11-7 17:26 详情  回复
谢谢大佬指点
发表于 2019-11-7 17:26:41
xuenixiang 发表于 2019-11-7 08:55
写的不错,很认真,加个精华,感谢分享!

谢谢大佬指点
发表于 2019-11-8 12:13:32
支持一下

    发表于 2019-11-17 07:27:10
    写的不错,很认真,加个精华,感谢分享!
    发表于 2019-12-16 18:43:26
    看了LZ的帖子,我只想说一句很好很强大!
    发表于 2020-3-7 00:47:04
    OD载入 下断 运行到call游戏就退出了 请问你是怎么解决的
    发表于 2020-3-11 09:50:43
    结合CE好评论,很棒的文章

      发表于 2020-3-14 09:55:13
      感谢分享
      发表于 2020-3-24 09:11:25
      感谢分享,我会认真学习的!

      小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

      GMT+8, 2024-4-25 04:46 , Processed in 0.125988 second(s), 83 queries .

      Powered by Discuz! X3.4

      Copyright © 2001-2021, Tencent Cloud.

      快速回复 返回顶部 返回列表