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

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

2007-10-6 19:50
12053
一个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 就自动关闭了,这可能是什么原因?谢谢。

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞7
打赏
分享
最新回复 (26)
雪    币: 1946
活跃值: (238)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
Bughoho 8 2007-10-6 19:58
2
0
重定位
雪    币: 194
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aj3423 2 2007-10-6 22:31
3
0
重定位是什么意思,难道代码段里的东西在运行时候还会变的吗 ,那个程序是一个游戏模拟器,不会有任何防逆向的,连壳都没有
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无聊仔 2007-10-6 23:23
4
0
就是说在你机器上的 1000F438
运行在别的机器里可能就成了 2000F438
雪    币: 280
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NCFZ 2007-10-7 00:30
5
0
mov ebp,1
雪    币: 3758
活跃值: (3212)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
曾半仙 12 2007-10-7 04:17
6
0
用Rejacker导出一份原dll的relox格式重定位表, 然后增加CDD2,CDDC两处重定位记录(RVA),
当然还需要删除AAFA+2处的重定位, 不然你的jmp far后面字节会被改掉了.
合并后,
删掉原dll文件的重定位表(因为relox不会帮你删), 用relox读入这份新表, 重建重定位表.
雪    币: 8191
活跃值: (4263)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2007-10-7 10:10
7
0
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
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
peaceclub 6 2007-10-7 12:58
8
0
从 1000AB06  call    dword ptr [<&USER32.SetTimer>]   改,越过有地址的运算。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2007-10-7 13:14
9
0
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                         
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
vrowang123 1 2007-10-7 13:23
10
0
果然巧妙!
学习了!
雪    币: 194
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aj3423 2 2007-10-7 13:24
11
0
非常感谢各位,


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

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

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

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

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

CCFER修改后:
1000AAFA    90                 nop
1000AAFB    B8 D0CD0010        mov     eax, 1000CDD0
               ^^^^^^^^
巧妙地利用了原重定位表对1000AAFC重定位。
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ziyihou 1 2007-10-7 14:28
13
0
总是无意中学习到一些有用的东西,嘿嘿
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
【BiNg】 2007-10-7 14:28
14
0
只有想不到
没有做不到
真强 学习
严重学习ing
雪    币: 6073
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2007-10-7 14:31
15
0
SUB EAX,0CDD0无必要吧
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
芭蕉小筑 2007-10-7 14:33
16
0
不是无意啊,在看雪学到东西很正常
雪    币: 194
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aj3423 2 2007-10-7 14:50
17
0
原来如此巧妙
找了一篇重定位的文章看了下,大致明白了
多谢各位~~~
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
zhzhtst 11 2007-10-7 14:56
18
0
[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]

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

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