首页
社区
课程
招聘
[已解决]在代码段最后添加了几行,为什么有的机器上能用,有的机器上就不行?
发表于: 2007-10-6 19:50 12531

[已解决]在代码段最后添加了几行,为什么有的机器上能用,有的机器上就不行?

2007-10-6 19:50
12531

一个DLL,他里面原来的代码是这样

1000AAFA    mov     dword ptr [1000F438], ebp        ; 我要把[1000F438]里放入1
1000AB00    mov     dword ptr [1000F234], ebp        ; 我要把[1000F234]里放入270Fh
1000AB06    call    dword ptr [<&USER32.SetTimer>]   ; \
我是这样做的,改成这样
1000AAFA    jmp     1000CDD0 ; 在代码段最后加上些代码,然后跳到那
1000AAFF    nop
1000AB00    dword ptr [1000F234], ebp        ; |
1000AB06    call    dword ptr [<&USER32.SetTimer>]   ; \

代码段最后找个空白地方加上
1000CDD0     mov     dword ptr [1000F438], 1
1000CDDA     mov     dword ptr [1000F234], 270F
1000CDE4     jmp     1000AB06

改好之后,在我的机器上能用,在其他人的机器上却运行不了(同样是xp sp2),  exe刚Load这个dll 就自动关闭了,这可能是什么原因?谢谢。


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

收藏
免费 7
支持
分享
最新回复 (26)
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
重定位
2007-10-6 19:58
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
重定位是什么意思,难道代码段里的东西在运行时候还会变的吗 ,那个程序是一个游戏模拟器,不会有任何防逆向的,连壳都没有
2007-10-6 22:31
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
就是说在你机器上的 1000F438
运行在别的机器里可能就成了 2000F438
2007-10-6 23:23
0
雪    币: 280
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mov ebp,1
2007-10-7 00:30
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
6
用Rejacker导出一份原dll的relox格式重定位表, 然后增加CDD2,CDDC两处重定位记录(RVA),
当然还需要删除AAFA+2处的重定位, 不然你的jmp far后面字节会被改掉了.
合并后,
删掉原dll文件的重定位表(因为relox不会帮你删), 用relox读入这份新表, 重建重定位表.
2007-10-7 04:17
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
7
1000AAFA   NOP
1000AAFB   MOV EAX,1000CDD0
1000AB00   JMP EAX

1000CDD0   SUB EAX,0CDD0
1000CDD5   MOV DWORD PTR [EAX+0F438],1
1000CDDF   MOV DWORD PTR [EAX+0F234],270F
1000CDE9   JMP 1000AB06
2007-10-7 10:10
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
8
从 1000AB06  call    dword ptr [<&USER32.SetTimer>]   改,越过有地址的运算。
2007-10-7 12:58
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
ccfer的方法很巧妙,学习。

不修改重定位表,我也来个传统的方法:
1000AAFA  nop
1000AAFB  push    1000CDD0 //利用了原重定位表
1000AB00  retn


 
1000CDD0  push    edx
1000CDD1  call    1000CDD6                       
1000CDD6  pop     edx
1000CDD7  sub     edx, 1000CDD6
1000CDDD  mov     dword ptr [edx+1000F438], 1
1000CDE7  mov     dword ptr [edx+1000F234], 270F
1000CDF1  pop     edx
1000CDF2  jmp     1000AB06                         
2007-10-7 13:14
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
果然巧妙!
学习了!
2007-10-7 13:23
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
非常感谢各位,


这个可以,但是没地方插入代码,还是需要jmp跳转

不同机器环境下,DLL基址的差别是否只可能是10000000的倍数?

我现在用的ccfer的方法,拿到别的机器上也能成功了

这个我还要再研究下。。
2007-10-7 13:24
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
12
1000AAFA    892D 38F40010      mov     dword ptr [1000F438], ebp
                 ^^^^^^^^

1000AAFC这个地址重定位表里有相应数据。

CCFER修改后:
1000AAFA    90                 nop
1000AAFB    B8 D0CD0010        mov     eax, 1000CDD0
               ^^^^^^^^
巧妙地利用了原重定位表对1000AAFC重定位。
2007-10-7 13:29
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
总是无意中学习到一些有用的东西,嘿嘿
2007-10-7 14:28
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
只有想不到
没有做不到
真强 学习
严重学习ing
2007-10-7 14:28
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
15
SUB EAX,0CDD0无必要吧
2007-10-7 14:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不是无意啊,在看雪学到东西很正常
2007-10-7 14:33
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
原来如此巧妙
找了一篇重定位的文章看了下,大致明白了
多谢各位~~~
2007-10-7 14:50
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
18
[QUOTE=ccfer;368207]1000AAFA   NOP
1000AAFB   MOV EAX,1000CDD0
1000AB00   JMP EAX

1000CDD0   SUB EAX,0CDD0
1000CDD5   MOV DWORD PTR [EAX+0F438],1
1000CDDF   MOV DW...[/QUOTE]

这就是病毒经常使用的重定位技巧
2007-10-7 14:56
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
19
我自己用话肯定没有这行的
写给别人看方便理解吧
2007-10-7 15:18
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
还在作早操呢??汗
2007-10-7 15:29
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
21
ccfer是牛,我只想到call $+5
2007-10-7 19:57
0
雪    币: 202
活跃值: (77)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
好好学习
2007-10-7 21:34
0
雪    币: 1456
活跃值: (3901)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
学习了,利用
1000AAFB   MOV EAX,1000CDD0
1000AB00   JMP EAX

1000CDD0   SUB EAX,0CDD0
求出偏移多少,不管在谁的电脑上用,都管用,这个好,记下了:)
2007-10-8 16:55
0
雪    币: 3758
活跃值: (3337)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
24
自定位搞QQ华夏字体时候偷懒用过, 哈哈.
2007-10-8 19:35
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
25
学习!!!!
2007-10-9 22:59
0
游客
登录 | 注册 方可回帖
返回
//