首页
社区
课程
招聘
[旧帖] [求助]内嵌汇编里使用C语言全局变量的问题 0.00雪花
发表于: 2011-8-27 21:34 1905

[旧帖] [求助]内嵌汇编里使用C语言全局变量的问题 0.00雪花

2011-8-27 21:34
1905
如a.c文件:汇编很菜, 望各位多指教

ULONG g_addr=0;

NTSTATUS DrvierEntry(....)
{
      int 3;

      g_addr = (ULONG)0x71234567
     __asm {

              xor esi,esi
              mov esi,g_addr
              JMP esi
   }

}
使用windbg调用时,g_addr 地址如9883888,并不是0x71234567,但调到mov esi,g_addr时确实有(9883888 = 71234567),
JMP esi,JMP到9883888地址上了,我本意是想JMP到0x71234567上的,求解呀

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
xor esi,esi
mov esi ,[g_addr]
jmp esi
2011-8-27 21:50
0
雪    币: 169
活跃值: (61)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
额,我程序是在ShellCode函数里取全局变量地址,如:
__declspec(naked)
void ShellCode()
{
....

...
                  xor esi,esi
                mov esi,g_Address;
  
                _asm int 3;
                JMP esi;

        }
}
在同DriverEntry里取正常,按照楼上方法还是不行。
2011-8-27 22:14
0
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
既然是ShellCode函数,就直接mov esi 0x71234567 不要全局变量了呗
而且jmp esi代码 也可以用findjmp工具找个地址代替 还可以多过几个杀软
2011-8-28 08:37
0
雪    币: 836
活跃值: (2807)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=happymhx;995065]xor esi,esi
mov esi ,[g_addr]
jmp esi[/QUOTE]

变量名就是一个地址,mov esi,【g_addr】 和 mov esi,g_addr是一样的
2011-8-28 09:16
0
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
确实是一样的 但是楼主的跳还是有问题 居然跳到地址不是值上!
2011-8-28 09:23
0
雪    币: 169
活跃值: (61)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
怎么可以把变量写成固定一个地址呢!
现在就是在shellcode使用全局变量找不到地址出错滴,各位有更好的解决方法么??
2011-8-28 10:14
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
mov eax, g_addr;
jmp dword ptr [eax];

试试这个呢。
2011-8-29 09:51
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=happymhx;995065]xor esi,esi
mov esi ,[g_addr]
jmp esi[/QUOTE]

~~~~~正解~~~~~
2011-8-29 10:45
0
雪    币: 169
活跃值: (61)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
搞定啦,谢谢各位。
先在shellcode里写成
mov esi,[0x87654321]
JMP esi

然后在别处把找到shellcode偏移,找到0x87654321改为正常地址就行了。
2011-8-29 16:10
0
游客
登录 | 注册 方可回帖
返回
//