能力值:
( LV4,RANK:50 )
|
-
-
2 楼
操作系统对DLL文件的载入会有一个重定位。每次重定位的基址都有可能是不同的。也就是说每次DUMP下来的代码都有可能不同
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
是啊基地址会变化,那怎么修改代码啊?
另外,我用od编辑代码后是这样的:
10002879 0FB65424 3B MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000287E 90 NOP
1000287F 90 NOP
10002880 90 NOP
10002881 . 8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX
10002887 . 8D50 01 LEA EDX,DWORD PTR DS:[EAX+1]
1000288A . 8D9B 00000000 LEA EBX,DWORD PTR DS:[EBX]
10002890 > 8A08 MOV CL,BYTE PTR DS:[EAX]
10002892 . 40 INC EAX
10002893 . 3ACB CMP CL,BL
保存完了以后,重新加载后就变成这样了:
10002879 . 0FB65424 DD 2454B60F
1000287D 3B DB 3B ; CHAR ';'
1000287E 90 NOP
1000287F 90 NOP
10002880 90 NOP
10002881 89 DB 89
10002882 15 DB 15
这是怎么回事啊?请赐教。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
MOV DWORD PTR DS:[100380B4],EDX
这样的相对地址写法不对吗?应该怎么写?
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
把未重定位的代码和重定位后的代码,以及重定位后你修改的代码贴出来才行啊
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我问的是两个问题,一个是怎么修改dll,一个是用od修改后,od不能正常反编译。
10002881 . 8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX
上面贴的是未重定位的,也就是用loaddll装载后静态分析的,下面是重定向后的。
01F02881 8915 B480F301 MOV DWORD PTR DS:[1F380B4],EDX
我主要目的是向这个地址传送一个常量。
谢谢采臣回贴。
|
能力值:
( LV9,RANK:3410 )
|
-
-
7 楼
不涉及需要重定位的
直接修改保存
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 fly 发布 不涉及需要重定位的 直接修改保存
我觉得也不需要重定位,可是用od汇编修改后,后面的代码od都不认了,变成数据了。用ida察看也是正确的语句。用ue看也和结果一样,可就是od不能正确识别:(
我把修改后的文件运行后,用od附加,发现代码又不一样:
01EB2852 C74424 28 3278A>MOV DWORD PTR SS:[ESP+28],57AE7832
01EB285A C64424 3A 64 MOV BYTE PTR SS:[ESP+3A],64
01EB285F 0FB64424 3A MOVZX EAX,BYTE PTR SS:[ESP+3A]
01EB2864 A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
01EB2869 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C]
01EB286D BA 35353138 MOV EDX,38313535
01EB2872 8910 MOV DWORD PTR DS:[EAX],EDX
01EB2874 C64424 3B 07 MOV BYTE PTR SS:[ESP+3B],7
01EB2879 0FB63F MOVZX EDI,BYTE PTR DS:[EDI]
01EB287C 16 PUSH SS
01EB287D 3B90 90908915 CMP EDX,DWORD PTR DS:[EAX+15899090]
01EB2883 B4 80 MOV AH,80
01EB2885 EE OUT DX,AL ; I/O command
01EB2886 018D 50018D9B ADD DWORD PTR SS:[EBP+9B8D0150],ECX
从01EB2879开始就不对了,请高手指点一下,该如何修改?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
再完整地把修改代码发一遍。
修改前:
10002852 > \8A4424 2A MOV AL,BYTE PTR SS:[ESP+2A]
10002856 . 8A4C24 28 MOV CL,BYTE PTR SS:[ESP+28]
1000285A . 0FB65424 3B MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000285F . 32C8 XOR CL,AL
10002861 . 8A4424 29 MOV AL,BYTE PTR SS:[ESP+29]
10002865 . 884C24 28 MOV BYTE PTR SS:[ESP+28],CL
10002869 . 8A4C24 2B MOV CL,BYTE PTR SS:[ESP+2B]
1000286D . 32C1 XOR AL,CL
1000286F . 884424 29 MOV BYTE PTR SS:[ESP+29],AL
10002873 . 0FB64424 3A MOVZX EAX,BYTE PTR SS:[ESP+3A]
10002878 . A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
1000287D . 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C]
10002881 . 8915 B4800310 MOV DWORD PTR DS:[100380B4],EDX
修改后:
10002852 C74424 28 327>MOV DWORD PTR SS:[ESP+28],57AE7832
1000285A C64424 3A 64 MOV BYTE PTR SS:[ESP+3A],64
1000285F 0FB64424 3A MOVZX EAX,BYTE PTR SS:[ESP+3A]
10002864 A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
10002869 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C]
1000286D BA 35353138 MOV EDX,38313535
10002872 8910 MOV DWORD PTR DS:[EAX],EDX
10002874 C64424 3B 07 MOV BYTE PTR SS:[ESP+3B],7
10002879 0FB65424 3B MOVZX EDX,BYTE PTR SS:[ESP+3B]
1000287E 90 NOP
1000287F 90 NOP
10002880 90 NOP
重定向后的:
01EB2852 C74424 28 3278A>MOV DWORD PTR SS:[ESP+28],57AE7832
01EB285A C64424 3A 64 MOV BYTE PTR SS:[ESP+3A],64
01EB285F 0FB64424 3A MOVZX EAX,BYTE PTR SS:[ESP+3A]
01EB2864 A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
01EB2869 8D4424 2C LEA EAX,DWORD PTR SS:[ESP+2C]
01EB286D BA 35353138 MOV EDX,38313535
01EB2872 8910 MOV DWORD PTR DS:[EAX],EDX
01EB2874 C64424 3B 07 MOV BYTE PTR SS:[ESP+3B],7
01EB2879 0FB63F MOVZX EDI,BYTE PTR DS:[EDI]
01EB287C 16 PUSH SS
01EB287D 3B90 90908915 CMP EDX,DWORD PTR DS:[EAX+15899090]
01EB2883 B4 80 MOV AH,80
01EB2885 EE OUT DX,AL ; I/O command
01EB2886 018D 50018D9B ADD DWORD PTR SS:[EBP+9B8D0150],ECX
跟踪到这里的时候发生存取异常(这是肯定的,地址越界了)
01EB2864 A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
这个地址应该怎么写?
另外为什么代码会和汇编时修改的不一样?是和这个重定向地址有关吗?
|
能力值:
( LV9,RANK:3410 )
|
-
-
10 楼
10002878 . A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX
这里重定位了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
最初由 fly 发布 10002878 . A3 B8800310 MOV DWORD PTR DS:[100380B8],EAX 这里重定位了
那该怎么写这个语句?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
高手指点一下了。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
晕~~又没有人了:(
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
老大们指点一下啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
高手们周末都休息了??
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
今天该有人了吧:)
期待ing
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
继续期待
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
终于找到原因了,需要修改重定位表,怎么修改啊?高手指点指点。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
哈哈~~终于搞定了。
|