首页
社区
课程
招聘
[求助]最近遇到的问题,
发表于: 2007-11-14 07:55 3783

[求助]最近遇到的问题,

2007-11-14 07:55
3783
我最近遇到的问题
004C0460  /$  53            PUSH EBX
004C0461  |.  56            PUSH ESI
004C0462  |.  33F6          XOR ESI,ESI
004C0464  |.  FF0D 44394C00 DEC DWORD PTR DS:[4C3944]
004C046A  |.  57            PUSH EDI
004C046B  |.  8B7C24 14     MOV EDI,DWORD PTR SS:[ESP+14]
004C046F  |.  BB FF1F0000   MOV EBX,1FFF
004C0474  |.  78 27         JS SHORT r14.004C049D
004C0476  |>  A1 38374C00   /MOV EAX,DWORD PTR DS:[4C3738]
004C047B  |.  8A0438        |MOV AL,BYTE PTR DS:[EAX+EDI]
004C047E  |.  88043E        |MOV BYTE PTR DS:[ESI+EDI],AL
004C0481  |.  A1 38374C00   |MOV EAX,DWORD PTR DS:[4C3738]
004C0486  |.  40            |INC EAX
004C0487  |.  23C3          |AND EAX,EBX
004C0489  |.  46            |INC ESI
004C048A  |.  3B7424 10     |CMP ESI,DWORD PTR SS:[ESP+10]
004C048E  |.  A3 38374C00   |MOV DWORD PTR DS:[4C3738],EAX
004C0493  |.  74 63         |JE SHORT r14.004C04F8
004C0495  |.  FF0D 44394C00 |DEC DWORD PTR DS:[4C3944]
004C049B  |.^ 79 D9         \JNS SHORT r14.004C0476
004C049D  |>  E8 65F8FFFF   /CALL r14.004BFD07
004C04A2  |.  0FB7C0        |MOVZX EAX,AX
004C04A5  |.  3D FF000000   |CMP EAX,0FF
004C04AA  |.  77 0C         |JA SHORT r14.004C04B8
004C04AC  |.  88043E        |MOV BYTE PTR DS:[ESI+EDI],AL
004C04AF  |.  46            |INC ESI
004C04B0  |.  3B7424 10     |CMP ESI,DWORD PTR SS:[ESP+10]
004C04B4  |.  74 42         |JE SHORT r14.004C04F8
004C04B6  |.^ EB E5         \JMP SHORT r14.004C049D
004C04B8  |>  05 03FFFFFF   ADD EAX,-0FD
004C04BD  |.  A3 44394C00   MOV DWORD PTR DS:[4C3944],EAX
004C04C2  |.  E8 29FEFFFF   CALL r14.004C02F0
004C04C7  |.  66:8BC8       MOV CX,AX
004C04CA  |.  8BC6          MOV EAX,ESI
004C04CC  |.  2BC1          SUB EAX,ECX
004C04CE  |.  48            DEC EAX
004C04CF  |.  23C3          AND EAX,EBX
004C04D1  |.  A3 38374C00   MOV DWORD PTR DS:[4C3738],EAX
004C04D6  |>  FF0D 44394C00 /DEC DWORD PTR DS:[4C3944]
004C04DC  |.^ 78 BF         |JS SHORT r14.004C049D
004C04DE  |.  8A0438        |MOV AL,BYTE PTR DS:[EAX+EDI]
004C04E1  |.  88043E        |MOV BYTE PTR DS:[ESI+EDI],AL
004C04E4  |.  A1 38374C00   |MOV EAX,DWORD PTR DS:[4C3738]
004C04E9  |.  40            |INC EAX
004C04EA  |.  23C3          |AND EAX,EBX
004C04EC  |.  46            |INC ESI
004C04ED  |.  3B7424 10     |CMP ESI,DWORD PTR SS:[ESP+10]
004C04F1  |.  A3 38374C00   |MOV DWORD PTR DS:[4C3738],EAX
004C04F6  |.^ 75 DE         \JNZ SHORT r14.004C04D6
004C04F8  |>  5F            POP EDI
004C04F9  |.  5E            POP ESI
004C04FA  |.  5B            POP EBX
004C04FB  \.  C3            RETN

我想在retn上面加上几个nop,程序为什么就运行不了了,不知道是为什么,高手帮忙给看下,谢谢!!!
是不是在retn上面不能加nop呢,高手给解释下,谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
004C04F8  |>  5F            POP EDI
004C04F9  |.  5E            POP ESI
004C04FA  |.  5B            POP EBX

这几行不能动的,恢复现场环境,同时平衡堆栈。
2007-11-14 09:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最后一句我不想用retn,有没有其他的办法能代替retn,我看到一些资料介绍retn实际上是系统自动执行了pop eip,jmp eip,可是现在我输入pop eip,系统提示错误,说这样操作不容许,为什么呢,通过什么方式才能给eip赋值呢?
2007-11-15 07:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
菜菜跟学一下!!
2007-11-15 08:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
EIP这个寄存器很特殊  系统设定它既不可读,也不可写,以保护指令流程的正确性。只能由系统自己修改它,所以诸如POP EIP之类的代码肯定是错误的。
2007-11-15 09:13
0
雪    币: 207
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呵呵!又学了一招!谢谢shinorwar大侠!
2007-11-15 09:21
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
虽然不能 pop eip
但是可以
00401375    58            pop eax
00401376    FFE0          jmp eax

但是因为 retn 只占一个字节 (C3)
而 pop eax ,jmp eax 点3个字节(58FFE0)

就不能随便的改.因为影响到 retn 下面的指令。
如果 retn 下面的是2个 int3 (CC) ,就可以了
2007-11-15 11:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
retn下面就是其他区段了,运行的过程中,系统会改写下面区段的内容.
我尝试过跳转到其他的空白区域,但是我跟踪后发现,跳转的地址,在运行的过程中,被改写了,发生了改变,可断定retn下面的区域在运行的过程中会被改写,跳转的命令要占用四个字节.
看来只能用其他的方法了,我已经给程序加了新的区段,准备把这个子模块全部挪过去.
不知道这样行不行.
大家还有更好的办法吗?
2007-11-16 15:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我尝试了增加区段的方法,可是程序运行不了了,我把替换的代码全部用nop填充,然后把代码都挪到新增加的区段里去,我用od调试设置断点的时候,系统出现如下的提示,高手帮忙分析,是为什么呢?
你将在代码部分范围外设置断点,int3断点设置在数据上将不会执行并可能严重影响调试的程序.
这是为什么呢,高手门给看看.
2007-11-17 09:17
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
10
OD设置,调试选项/安全 将“在代码外设断警告 ”的√取消
2007-11-17 09:39
0
游客
登录 | 注册 方可回帖
返回
//