首页
社区
课程
招聘
[旧帖] [求助]请教高手一个问题 0.00雪花
发表于: 2010-1-7 12:58 5116

[旧帖] [求助]请教高手一个问题 0.00雪花

2010-1-7 12:58
5116
请教大家一个问题,如下:
下面有一个普通的程序段
004043A4  |.  C1F9 08       SAR ECX,8
004043A7  |.  0FB6D1        MOVZX EDX,CL
004043AA  |.  F64456 01 80  TEST BYTE PTR DS:[ESI+EDX*2+1],80
004043AF  |.  5E            POP ESI
004043B0  |.  74 0E         JE SHORT st1.004043C0
004043B2  |.  8065 FE 00    AND BYTE PTR SS:[EBP-2],0
004043B6  |.  884D FC       MOV BYTE PTR SS:[EBP-4],CL
004043B9  |.  8845 FD       MOV BYTE PTR SS:[EBP-3],AL
下面是“要编写的程序代码”。。。

我要如何编写这段代码才能做到,把004043B0上的74改成75?
(要写的这段代码的作用就是动态修改前面的代码,不是在OD中修改)
请高手指教!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
004043B0  |.  75 0E         JNE SHORT st1.004043C0
2010-1-7 13:51
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
如果你用的是OD,那么在代码上点右键,然后弹出菜单->二进制->编辑,弹出的对话可以直接修改数字
2010-1-7 14:14
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢以上两位的回复,其实你们没有理解我的意思,我是说要在程序中动态的修改上面的代码。
请高手指教。。
2010-1-7 16:23
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请高手们看一下啊
2010-1-8 09:20
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你是不是要修改的是ZF标志位看一下,并不是要完全修改该软件。
2010-1-8 09:47
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
我做过一些自修改的CM,我的思路是这样的,在“要编写的程序代码”里jmp到一个空白的地方,进行修改
空白的地方的代码这样写:
pushad
add byte[004043B0],1
....其他自修改
popad
jmp // 跳回去
我一般都是给软件添加一个Section段来写,这样能保证有足够的空间,否则你就自己慢慢找地方写吧
2010-1-8 10:07
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
Ps:楼主提问为什么没悬赏? 我提问都最少10Kx。。。疑惑ing。。。
2010-1-8 10:09
0
雪    币: 109
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
具体的说不上了,
你去看罗云彬的 win32教程,那里有。其实就是修改内存。也叫内存补丁。。
主要是调试api使用。
2010-1-8 10:32
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=blueapplez;741973]我做过一些自修改的CM,我的思路是这样的,在“要编写的程序代码”里jmp到一个空白的地方,进行修改
空白的地方的代码这样写:
pushad
add byte[004043B0],1
....其他自修改
popad
jmp // 跳回去
我一般都是给软件添加一个Section段来写,...[/QUOTE]

add byte[004043B0],1试了到是可以,
可是为什么 MOV BYTE PTR CS:[EBX],AL  不可以啊?(代码段已经可写了)
2010-1-8 12:39
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=wufabiyu;742126]add byte[004043B0],1试了到是可以,
可是为什么 MOV BYTE PTR CS:[EBX],AL  不可以啊?(代码段已经可写了)[/QUOTE]

没遇到过这么奇怪的问题~  我写过的汇编码都是在OD下的简单汇编,话说还没系统学过汇编,我太菜,不懂。
2010-1-8 13:04
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
12
VirtualQuery
VirtualProtect
修改属性。
2010-1-8 14:06
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
004043B0  |.  75 0E         JNE SHORT st1.004043C0
2010-1-8 14:08
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
为什么用DS:[]就可以,而CS:[]就不可以呢?
2010-1-8 15:13
0
雪    币: 208
活跃值: (148)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
[QUOTE=wufabiyu;742252]为什么用DS:[]就可以,而CS:[]就不可以呢?[/QUOTE]

这还得从IA32 Basic Architecture 说起,哎。。。。说来话长了,
找下面得资料看一下吧
Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 1: Basic Architecture
Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 2A: Instruction Set Reference, A-M
Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 2B: Instruction Set Reference, N-Z
Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 3B: System Programming Guide

链接http://www.intel.com/products/processor/manuals/
2010-1-8 15:57
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
呵呵,代码段在执行期不可修改,你要保证你的EIP不在这个区段内才能改
2010-1-8 23:56
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
或者就做个类似OD的调试程序,把进程挂起再修改。
2010-1-8 23:57
0
游客
登录 | 注册 方可回帖
返回
//