能力值:
( LV15,RANK:2473 )
2 楼
貌似是有导出的:KiFastSystemCallRet
能力值:
( LV5,RANK:70 )
3 楼
ntdll!KiFastSystemCall:
7c92e510 8bd4 mov edx,esp
7c92e512 0f34 sysenter
ntdll!KiFastSystemCallRet:
7c92e514 c3 ret
返回到KiFastSystemCallRet,然后再返回到原函数。
能力值:
( LV2,RANK:10 )
4 楼
不是返回到KiFastSystemCallRet,各个函数返回位置不一样,在sysenter位置单步后,根本就不会到他的下一条指令
能力值:
( LV2,RANK:10 )
5 楼
The SYSENTER and SYSEXIT instructions are companion instructions, but they do not constitute a call/return pair. When executing a SYSENTER instruction, the processor does not save state information for the user code, and neither the SYSENTER nor the SYSEXIT instruction supports passing parameters on the stack.
难道真没有一定的返回规则,返回ring3都是通过函数设置ecx,edx吗
能力值:
( LV8,RANK:120 )
6 楼
ccfer难道也是内核大牛?
算法,破解,内核都牛的人,少见啊。。。nooby和风月应该称得上,哦,还有V大。这些比较活跃,所以才知道,哈
能力值:
( LV15,RANK:2473 )
7 楼
这种资料随便g一下就有的,比如
http://blog.chinaunix.net/u/19585/showart_234299.html
能力值:
( LV2,RANK:10 )
8 楼
不要说随便g下就有,肯定是g过后才能问的
lea edx,Exit
mov ecx,esp
sysenter
Exit:
你给链接是通过自己设置edx来决定返回值的,问题是windows中在KiFastcallSystemCall中并没有通过Edx传递返回地址,如
NtOpenSection
7C92D62E >/$B8 7D000000 mov eax, 7D
7C92D633 |. BA 0003FE7F mov edx, 7FFE0300
7C92D638 |. FF12 call dword ptr [edx];调用KiFastcallSystemCall
7C92D63A \. C2 0C00 retn 0C
KiFastcallSystemCall
7C92E510 >/$ 8BD4 mov edx, esp
7C92E512 |. 0F34 sysenter
7C92E514 >\$ C3 retn
sysenter单步后,返回到7C92D63A 的retn 0c,并不是返回到7C92E514
个人猜测windows内核是根据edx( mov edx, esp)即ring3的esp,通过[edx]来取得返回地址
能力值:
( LV15,RANK:2473 )
9 楼
返回你要看sysexit才行吧
sysenter是只管进入不管返回的
能力值:
( LV2,RANK:10 )
10 楼
看来还是只能去分析一sysexit附近都是些啥东西了,本想偷个懒
能力值:
( LV5,RANK:70 )
11 楼
你自己在ntdll!KiFastSystemCallRet下个断,看能走到那不。。。。。。
nt!KiFastCallEntry:
80542320 b923000000 mov ecx,23h
80542325 6a30 push 30h
80542327 0fa1 pop fs
80542329 8ed9 mov ds,cx
8054232b 8ec1 mov es,cx
8054232d 648b0d40000000 mov ecx,dword ptr fs:[40h]
80542334 8b6104 mov esp,dword ptr [ecx+4]
80542337 6a23 push 23h
80542339 52 push edx
8054233a 9c pushfd
8054233b 6a02 push 2
8054233d 83c208 add edx,8
80542340 9d popfd
80542341 804c240102 or byte ptr [esp+1],2
80542346 6a1b push 1Bh
80542348 ff350403dfff push dword ptr ds:[0FFDF0304h]
8054234e 6a00 push 0
80542350 55 push ebp
80542351 53 push ebx
80542352 56 push esi
lkd> dd 0FFDF0304h
ffdf0304 7c92e514 00000000 00000000 00000000
ntdll!KiFastSystemCall:
7c92e510 8bd4 mov edx,esp
7c92e512 0f34 sysenter
ntdll!KiFastSystemCallRet:
7c92e514 c3 ret
能力值:
( LV2,RANK:10 )
12 楼
关注!
这个问题很新颖