首页
社区
课程
招聘
关于OD方面的一个问题请教,请高手帮忙,谢谢!
发表于: 2009-12-23 14:52 5421

关于OD方面的一个问题请教,请高手帮忙,谢谢!

2009-12-23 14:52
5421
0049598D  |.  8D85 78FFFFFF      lea     eax, dword ptr [ebp-88]
00495993  |.  50                 push    eax                           ;eax=0012F520
00495994  |.  8D85 74FFFFFF      lea     eax, dword ptr [ebp-8C]       堆栈地址=0012F51C  eax=0012F520
0049599A  |.  8BD3               mov     edx, ebx           ; ebx=00A19685, (ASCII 30,"0020O120303432032423424242")edx=0012F4B0  
0049599C  |.  E8 BBEAF6FF        call    0040445C      
004959A1  |.  8B85 74FFFFFF      mov     eax, dword ptr [ebp-8C]   ;堆栈 ss:[0012F51C]=00A17B68, (ASCII 30,"0020O120303432032423424242")  eax=0012F51C
004959A7  |.  B9 05000000        mov     ecx, 5                           
004959AC  |.  BA 01000000        mov     edx, 1
004959B1  |.  E8 CEEDF6FF        call    00404784                            ;取前4位
004959B6      8B85 78FFFFFF      mov     eax, dword ptr [ebp-88]          堆栈 ss:[0012F520]=00A17C3C, (ASCII "00020") eax=0012F520
004959BC  |.  E8 CB33F7FF        call    00408D8C
004959C1  |.  8D95 7CFFFFFF      lea     edx, dword ptr [ebp-84]
004959C7  |.  E8 8432F7FF        call    00408C50                        ;取整数
004959CC  |.  FFB5 7CFFFFFF      push    dword ptr [ebp-84]              堆栈 ss:[0012F524]=00A17C50, (ASCII "20")
004959D2  |.  68 C85D4900        push    00495DC8                        
004959D7  |.  8D45 80            lea     eax, dword ptr [ebp-80]

在这段代码中用OD调试中在MOV 语句中显示,堆栈 ss:[0012F520]=00A17C3C, (ASCII "00020") eax=0012F520
我想将其中的ASCII "00020"改成"00030"怎么改呢?
我在百度上搜了一下,看到有类似以下的解答:
你先跳转到一个空白的地方,然后加一句
mov [eax+30],30h
再跳转回去就行了。注意把跳转指令占用的代码也补齐

但我这样改的:
将004959B6      8B85 78FFFFFF      mov     eax, dword ptr [ebp-88]  改成jmp  00495D01(这个地方是空白)
然后在00495D01这个地方 插入mov [ebp-88],30h
但OD提示“请指定操作数大小”,不让进行,请大侠们帮解答一下,谢谢!!!!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 295
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
应该可以根据指示的地址找到ASCII串的存储地方,然后修改
2009-12-23 15:46
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mov dword ptr [ebp-88],30h

Kx
2009-12-23 16:01
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在00495D01这个地方写
mov     eax, dword ptr [ebp-88]
mov     byte [eax+3], 33
jmp     004959BC
2009-12-23 16:11
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
胡说八道,请看8楼.
2009-12-23 17:56
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
首先感谢大家的热心帮助,还想问一下是不是空白的地方就是为00000000的地方?
按上面的修改完后,运行出现:



上传的附件:
2009-12-23 20:15
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
首先感谢大家的热心帮助,还想问一下是不是空白的地方就是为00000000的地方?


如果空白的地方是代码区块的地址范围,那么一个地址范围连续出现大段的000000,在正常情况下都是未使用的内存地址.
2009-12-23 20:21
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
LZ,抱歉,我刚看错了.应该是
将004959B6      8B85 78FFFFFF      mov     eax, dword ptr [ebp-88]  改成jmp  00495D01(这个地方是空白)
然后在00495D01这个地方插入 mov  eax,dword ptr [ebp-88h]     ;注意88后面有16进制立即数标志h
                           mov   byte ptr [eax] ,30h         ;这里你就改一个数值,注意该数值保存在地址00A17C3C上
                           jmp   004959BC

红色标记那个,如果你是想修改2个字节,你该写为word;类似,4个字节为dword.

PS:以上全错,忽略了ASCII数值这几个字。
2009-12-23 20:30
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
直接找到数据存储的地方,然后改掉它就行啦!
2009-12-23 22:51
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主要这样改,明显是想保存后自运行,而不只是在OD里运行通过就行了.
2009-12-23 22:57
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
11
感觉达文西同学对咯~人家是把“20”改成“30”, 请注意是字符串,字符 ‘3’ 的16进制是 33h,   mov  30h怎么会变成字符 ‘3’ ?  还有地址也不对,应该+3
2009-12-24 00:42
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢大家的支持!!,谢谢!我按怀特迈恩的方法改了一下,还是出现上面的错误,我想是不是还有哪里没改对?大家可能是因为我说了百度上提供的那种方法,请问有没有其它方法呢?
还有我说要改的那个地方ASCII数值是"00020"  不是20,我想改成"00030",而不是30,我感觉与这个可能有关系吧?程序运行到:004959B6时,堆栈 ss:[0012F520]=00A17C3C, (ASCII "00020") ,接着下面一个CALL是去掉前面的000,运行到:004959CC时,堆栈 ss:[0012F524]=00A17C50, (ASCII "20"),麻烦各位了!!!谢谢!!!

[QUOTE=怀特迈恩;732093]LZ,抱歉,我刚看错了.应该是
将004959B6      8B85 78FFFFFF      mov     eax, dword ptr [ebp-88]  改成jmp  00495D01(这个地方是空白)
然后在00495D01这个地方插入 mov  eax,dword ptr [eb...[/QUOTE]
2009-12-24 09:18
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错,达文西同学说的是正确的,那个 ASCII数值 被我忽略了。
贴下完整的代码:
将004959B6      8B85 78FFFFFF      mov     eax, dword ptr [ebp-88]  改成jmp  00495D01(这个地方是空白)
mov     eax, dword ptr [ebp-88h]
mov     byte ptr [eax+3], 33h
jmp     004959BC

感谢达文西同学和11楼,剽窃下你们的代码。这下不信还不正确。
2009-12-24 10:07
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢,看来达文西同学的是正确的,谢谢各位!!!!!!10分给达文西8分,怀特迈恩的热情值得感谢!+2.
2009-12-24 14:53
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习了,谢谢
2009-12-24 15:28
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
16
汗!!怎么说俺也是达文西的“同党”  给个1分也好~~~~~
2009-12-24 15:49
0
游客
登录 | 注册 方可回帖
返回
//