您当前的位置:首页>>编程相关>>正文
 
天龙还原精灵卸载器源代码
作者: 来源: 日期:2007-5-16 11:22:21  点击次数:

mov BaseAddress,eax
cmp BaseAddress,0
jnz @f
&#59;printf("Error MapViewOffile:")&#59;
&#59;PrintWin32Error(GetLastError())&#59; return 0&#59;
mov eax,0
ret
@@:
mov    esi,eax &#59;esi->gdt base
movzx  eax,word  ptr GdtLimit   &#59;eax=gdt limit
mov IsIdtFlag,0
call    Search_XDT
mov tmpSel,eax
mov setcg,FALSE&#59;
mov esi,BaseAddress
mov ebx,eax
add ebx,esi
assume ebx:ptr MyGATE
mov edx,Entry
mov [ebx].OFFSETL,dx
mov [ebx].SELECTOR ,8
mov [ebx].DCOUNT ,0
mov [ebx].GTYPE,0ech
shr edx,16
mov [ebx].OFFSETH,dx
mov setcg,TRUE
cmp setcg,0
jnz ChangeOK
call @f
db "ZwClose",0
@@:
push NtdllMod
call GetProcAddress
push hSection
call eax
xor eax,eax
ret
ChangeOK:
and    dword ptr Callgt,0
or     al,3h
mov    word  ptr [Callgt+4],ax 
&#59;farcall[2]=((short)((ULONG)cg-(ULONG)BaseAddress))|3&#59; //Ring 3 callgate&#59;

invoke VirtualLock,Entry,seglen
test eax,eax
jnz @f
xor eax,eax
ret
@@:
invoke GetCurrentThread
invoke SetThreadPriority,eax,THREAD_PRIORITY_TIME_CRITICAL

invoke Sleep,0
call    fword ptr [Callgt]            &#59;use callgate to Ring0!
&#59;_asm call fword ptr [farcall]
invoke GetCurrentThread
invoke SetThreadPriority,eax,THREAD_PRIORITY_NORMAL

invoke VirtualUnlock,Entry,seglen

&#59;//Clear callgate
&#59;*(ULONG *)cg=0&#59;
&#59;*((ULONG *)cg+1)=0&#59;
mov esi,BaseAddress
mov eax,tmpSel
add eax,esi
mov dword ptr[eax],0
mov dword ptr[eax+4],0
&#59;ZwClose(hSection)&#59;
call @f
db "ZwClose",0
@@:
push NtdllMod
call GetProcAddress
push hSection
call eax
mov eax,TRUE
ret
ExecRing0Proc endp

Search_XDT proc near      &#59;entry esi==Base  of Idt  or GDT
                          &#59;Eax==Limit
    pushad     
    mov ebx,eax            &#59;ebx=limit
    mov eax,8        &#59; skipping null selector
@@1:       
    cmp IsIdtFlag,1
    jz  IsIdt
    cmp dword ptr [esi+eax+0],0 &#59;gdt  
    jnz @@2
    cmp dword ptr [esi+eax+4],0   
    jz @@3
    jmp @@2
IsIdt:
    cmp dword ptr [esi+eax+0],80000h &#59;idt  
    jnz @@2
    cmp dword ptr [esi+eax+4],0   
    jz @@3 
@@2:       
    add eax,8       
    cmp eax,ebx       

本新闻共9页,当前在第8页  1  2  3  4  5  6  7  8  9  


上一篇:一种可以穿透还原卡和还原软件的代码
下一篇:扩展int13h调用详解(修正)

  北京总部: 4006-505-808
  上 海 部: 021-58358765
  深 圳 部: 0755-83692929
  浙 江 部: 13666673722
  广 州 部: 020-83821091
  重 庆 部: 023-86870422
  福 建 部: 0591-83300680
  西 安 部: 029-68614669
  沈 阳 部: 13386848847
  昆 明 部: 15987117834
  其它地区: 4006-505-808

经典案例
中国石油管理局-Oracle数据库恢
中国网通-IBM EXP300磁盘阵列数
大连鸿德经贸有限责任公司-SQL
中国地质环境监测院-HP LH3000
藁城市东街百货-EFS文件解密成
工商银行山东分行-AIX删除LV数
中央电视台新闻评论部-苹果分
promise乔鼎硬盘阵列数据恢复成
麒麟童文化-苹果分区无法打开,
NAS 8100服务器数据恢复成功 
解决方案
raid磁盘阵列OFFLINE后的应急方
磁盘未被格式化,是否格式化数据
误GHOST、误一键恢复灾难应急方
误删除、误格式化数据灾难应急
LINUX FSCK数据出错灾难应急方
北亚数据恢复 - 联系我们 - 关于北亚 - 友情链接 - 网站地图 - RSS聚合 
版权所有 北京北亚数据恢复中心
24小时免费咨询电话:4006-505-808 或 800-810-580
公司地址:北京市海淀区学院南路68号吉安大厦C座(汇智楼)528室