首页
社区
课程
招聘
Obsidium V1.25加壳VB程序的脱壳――超级自动注册申请王
发表于: 2005-4-29 22:51 13136

Obsidium V1.25加壳VB程序的脱壳――超级自动注册申请王

fly 活跃值
85
2005-4-29 22:51
13136

Obsidium V1.25加壳VB程序的脱壳――超级自动注册申请王 V1.9
            
           
            
下载页面:  http://www2.skycn.com/soft/21992.html
软件大小:  2894 KB
软件语言:  简体中文
软件类别:  国产软件 / 试用版 / 网络辅助
应用平台:  Win9x/NT/2000/XP
加入时间:  2005-04-12 16:54:38
下载次数:  26267
推荐等级:  ***
开 发 商:  http://www.5it.cn
软件介绍: “超级自动注册申请王”是一款能够自动注册QQ号、UC号、YamQQ号、赢财通QQ号、MyIM号、联众游戏大厅、游戏茶苑大厅、E话通号、KuGoo号、PP点点通帐号、浩方游戏平台号、免费相册、诸多免费邮箱、免费二级域名……管理所注册的号码密码……等等等等诸多的功能于一身的强大软件。
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
            
【调试环境】:WinXP、flyODBG、PEiD、LordPE、ImportREC
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
Obsidium新版一直没看,有兄弟提出这个程序,看看不算难,所以记录了一下。
―――――――――――――――――――――――――――――――――
一、Obsidium V1.25的反跟踪

            
用OllyDbg修改版来调试,设置OllyDbg忽略所有异常选项。
用IsDebug插件去掉OllyDbg的调试器标志。用UnhExcFlt.DLL插件先Patch一下。
     
0066E000    E8 0E000000     call 0066E013
//进入Ollydbg后暂停在这
0066E005    8B5424 0C       mov edx,dword ptr ss:[esp+C]
0066E009    8382 B8000000 0>add dword ptr ds:[edx+B8],0D
0066E010    33C0            xor eax,eax
0066E012    C3              retn

如果没有使用UnhandledExceptionFilter插件Patch,可以如下修改。
Ctrl+G:UnhandledExceptionFilter

7C862B8A    68 48020000     push 248
7C862B8F    68 E035867C     push kernel32.7C8635E0
7C862B94    E8 32F9F9FF     call kernel32.7C8024CB
7C862B99    A1 CC36887C     mov eax,dword ptr ds:[7C8836CC]
7C862B9E    8945 E4         mov dword ptr ss:[ebp-1C],eax
7C862BA1    8B5D 08         mov ebx,dword ptr ss:[ebp+8]
7C862BA4    899D 88FEFFFF   mov dword ptr ss:[ebp-178],ebx
7C862BAA    C785 B8FEFFFF 0>mov dword ptr ss:[ebp-148],4
7C862BB4    33FF            xor edi,edi
7C862BB6    89BD C4FEFFFF   mov dword ptr ss:[ebp-13C],edi
7C862BBC    89BD 94FEFFFF   mov dword ptr ss:[ebp-16C],edi
7C862BC2    8B03            mov eax,dword ptr ds:[ebx]
7C862BC4    F640 04 10      test byte ptr ds:[eax+4],10
7C862BC8    74 0A           je short kernel32.7C862BD4
7C862BCA    FF30            push dword ptr ds:[eax]
7C862BCC    6A FF           push -1
7C862BCE    FF15 FC13807C   call dword ptr ds:[<&ntdll.NtTerminateProcess>]
7C862BD4    8B03            mov eax,dword ptr ds:[ebx]
7C862BD6    BE 050000C0     mov esi,C0000005
7C862BDB    3930            cmp dword ptr ds:[eax],esi
7C862BDD    75 1A           jnz short kernel32.7C862BF9
7C862BDF    8378 14 01      cmp dword ptr ds:[eax+14],1
7C862BE3    75 14           jnz short kernel32.7C862BF9
7C862BE5    FF70 18         push dword ptr ds:[eax+18]
7C862BE8    E8 87FCFFFF     call kernel32.7C862874
7C862BED    83F8 FF         cmp eax,-1
7C862BF0    75 07           jnz short kernel32.7C862BF9
7C862BF2    0BC0            or eax,eax
7C862BF4    E9 5F080000     jmp kernel32.7C863458
7C862BF9    89BD DCFEFFFF   mov dword ptr ss:[ebp-124],edi
7C862BFF    57              push edi
7C862C00    6A 04           push 4
7C862C02    8D85 DCFEFFFF   lea eax,dword ptr ss:[ebp-124]
7C862C08    50              push eax
7C862C09    6A 07           push 7
7C862C0B    E8 FDB3FAFF     call kernel32.GetCurrentProcess
7C862C10    50              push eax
7C862C11    FF15 AC10807C   call dword ptr ds:[<&ntdll.NtQueryInformationProcess>]
7C862C17    85C0            test eax,eax
7C862C19    0F8C A2000000   jl kernel32.7C862CC1
7C862C1F    39BD DCFEFFFF   cmp dword ptr ss:[ebp-124],edi
//修改为:   mov dword ptr ss:[ebp-124],0
7C862C25    0F84 96000000   je kernel32.7C862CC1
//修改为:   jmp 7C862CC1

Obsidium V1.25专门针对WinXP下三环调试器设置了一个检测。
Ctrl+G:CheckRemoteDebuggerPresent

7C859902    8BFF            mov edi,edi
7C859904    55              push ebp
7C859905    8BEC            mov ebp,esp
7C859907    837D 08 00      cmp dword ptr ss:[ebp+8],0
7C85990B    56              push esi
7C85990C    74 35           je short kernel32.7C859943
7C85990E    8B75 0C         mov esi,dword ptr ss:[ebp+C]
7C859911    85F6            test esi,esi
7C859913    74 2E           je short kernel32.7C859943
7C859915    6A 00           push 0
7C859917    6A 04           push 4
7C859919    8D45 08         lea eax,dword ptr ss:[ebp+8]
7C85991C    50              push eax
7C85991D    6A 07           push 7
7C85991F    FF75 08         push dword ptr ss:[ebp+8]
7C859922    FF15 AC10807C   call dword ptr ds:[<&ntdll.NtQueryInformationProcess>]
7C859928    85C0            test eax,eax
7C85992A    7D 08           jge short kernel32.7C859934
7C85992C    50              push eax
7C85992D    E8 49FAFAFF     call kernel32.7C80937B
7C859932    EB 16           jmp short kernel32.7C85994A
7C859934    33C0            xor eax,eax
7C859936    3945 08         cmp dword ptr ss:[ebp+8],eax
7C859939    0F95C0          setne al
7C85993C    8906            mov dword ptr ds:[esi],eax
7C85993E    33C0            xor eax,eax
7C859940    40              inc eax
//修改为:   nop
7C859941    EB 09           jmp short kernel32.7C85994C
7C859943    6A 57           push 57
7C859945    E8 76F9FAFF     call kernel32.7C8092C0
7C85994A    33C0            xor eax,eax
7C85994C    5E              pop esi
7C85994D    5D              pop ebp
7C85994E    C2 0800         retn 8

OK,现在就可以在OllyDbg修改版里面正常运行起来了。

―――――――――――――――――――――――――――――――――
二、搞定输入表

超级自动注册申请王是VB写的程序,许多壳对VB保护不佳。Obsidium也没有对这个程序使用上特色重定位功能,因此我们直接去搞定输入表了。
修改完上面几处去除反跟踪后,Ctrl+G:IsProcessorFeaturePresent

7C80ACB2    8BFF            mov edi,edi
7C80ACB4    55              push ebp
7C80ACB5    8BEC            mov ebp,esp
7C80ACB7    8B45 08         mov eax,dword ptr ss:[ebp+8]
7C80ACBA    83F8 40         cmp eax,40
7C80ACBD    73 0B           jnb short kernel32.7C80ACCA
7C80ACBF    0FB680 7402FE7F movzx eax,byte ptr ds:[eax+7FFE0274]
7C80ACC6    5D              pop ebp
7C80ACC7    C2 0400         retn 4
//在函数末尾下断,避开壳的检测。Shift+F9中断后取消断点

在PE Header下面的第2区段设置内存访问断点。Shift+F9中断下来取消断点

00B68155    893E            mov dword ptr ds:[esi],edi
//中断在这里

Ctrl+F在整个段块搜索命令:test word ptr ds:[esi],20
找到在00B67FCE处,下面我们来Patch,以获得正确输入表函数。

00B67FC8    8B75 10         mov esi,dword ptr ss:[ebp+10]
00B67FCB    8B7D 0C         mov edi,dword ptr ss:[ebp+C]
00B67FCE    66:F706 2000    test word ptr ds:[esi],20
//Patch ①:test word ptr ds:[esi],8  ★
00B67FD3    74 46           je short 00B6801B
//Patch ②:jne 00B6801B  ★
00B67FD5    66:F706 0200    test word ptr ds:[esi],2
00B67FDA    75 1F           jnz short 00B67FFB
00B67FDC    66:C706 0400    mov word ptr ds:[esi],4
00B67FE1    8B45 14         mov eax,dword ptr ss:[ebp+14]
00B67FE4    6A 01           push 1
00B67FE6    6A 00           push 0
00B67FE8    FF76 04         push dword ptr ds:[esi+4]
00B67FEB    6A 00           push 0
00B67FED    FF75 18         push dword ptr ss:[ebp+18]
00B67FF0    FF50 50         call dword ptr ds:[eax+50]
00B67FF3    85C0            test eax,eax
00B67FF5    74 38           je short 00B6802F
//Patch ③:je 00B6801B  ★
00B67FF7    8907            mov dword ptr ds:[edi],eax
//正确函数写入   这里可以看看[edi]地址,以确定IAT RVA和Size
//第一次EDI=00401000
00B67FF9    EB 20           jmp short 00B6801B
00B67FFB    66:C706 0400    mov word ptr ds:[esi],4
00B68000    8B45 14         mov eax,dword ptr ss:[ebp+14]
00B68003    0FB756 02       movzx edx,word ptr ds:[esi+2]
00B68007    6A 01           push 1
00B68009    52              push edx
00B6800A    6A 00           push 0
00B6800C    FF76 04         push dword ptr ds:[esi+4]
00B6800F    FF75 18         push dword ptr ss:[ebp+18]
00B68012    FF50 50         call dword ptr ds:[eax+50]
00B68015    85C0            test eax,eax
00B68017    74 16           je short 00B6802F
//Patch ④:je 00B6801B  ★
00B68019    8907            mov dword ptr ds:[edi],eax
00B6801B    83C6 08         add esi,8
00B6801E    83C7 04         add edi,4
00B68021    FF4D 08         dec dword ptr ss:[ebp+8]
00B68024    75 A8           jnz short 00B67FCE
00B68026    33C0            xor eax,eax
00B68028    40              inc eax
00B68029    5F              pop edi
00B6802A    5E              pop esi
00B6802B    5D              pop ebp
00B6802C    C2 1400         retn 14

在00B6802C处下断,Shift+F9后输入表处理完毕
在00401000处向下查看,可以发现结束地址是004012C4
运行ImportREC,选择这个进程,填入RVA=00001000、Size=000002C4,获取输入表后发现有一个无效指针
00404D10    FF25 44114000   jmp dword ptr ds:[401144]

VB的东东一般加密的特殊函数是DllFunctionCall。
当然,也可以跟踪得出。跟踪原版这里会来到如下地方:

006767F7    55              push ebp
//这几条指令其实是把DllFunctionCall函数的挪移到壳里执行
006767F8    8BEC            mov ebp,esp
006767FA    83EC 0C         sub esp,0C
006767FD    56              push esi
006767FE    9C              pushfd
006767FF    F0:FF0D D266670>lock dec dword ptr ds:[6766D2]
00676806    9D              popfd
00676807    E9 14389965     jmp 6600A020; MSVBVM60.6600A020

6600A019    55              push ebp
//DllFunctionCall
6600A01A    8BEC            mov ebp,esp
6600A01C    83EC 0C         sub esp,0C
6600A01F    56              push esi
6600A020    8D45 F4         lea eax,dword ptr ss:[ebp-C]
//从壳里直接跳到这里
6600A023    57              push edi
6600A024    50              push eax
6600A025    8D45 FC         lea eax,dword ptr ss:[ebp-4]
6600A028    8365 FC 00      and dword ptr ss:[ebp-4],0
6600A02C    50              push eax
6600A02D    8D45 F8         lea eax,dword ptr ss:[ebp-8]
6600A030    50              push eax
6600A031    6A 00           push 0
6600A033    FF75 08         push dword ptr ss:[ebp+8]
6600A036    E8 42000000     call 6600A07D

―――――――――――――――――――――――――――――――――
三、OEP

Obsidium没有对这个东东重定位,所以直接Alt+M打开内存查看窗口
在PE Header下面的第2区段设置内存访问断点。Shift+F9中断下来

004050AD    E8 EEFFFFFF     call SuperAut.004050A0 ; jmp to MSVBVM60.ThunRTMain
//直接中断在这里。这是OEP处的第2条指令

看看堆栈:
0013FFC0   004054C4  ASCII "VB5!6&vb6chs.dll"

Obsidium的Stolen OEP Code一直不算强。很容易就得到OEP处第一条指令
004050A8    68 C4544000     push SuperAut.004054C4 ; ASCII "VB5!6&vb6chs.dll"
004050AD    E8 EEFFFFFF     call SuperAut.004050A0 ; jmp to MSVBVM60.ThunRTMain

运行LordPE,完全Dump这个进程。
修正ImportREC里面的OEP RVA=000050A8,FixDump,脱壳完成了。

―――――――――――――――――――――――――――――――――
四、关于破解

这个东东的注册信息保存在注册表中,重启验证。
去掉时间限制很简单,BP rtcMsgBox,改几个跳转就行了。

            
―――――――――――――――――――――――――――――――――                                
         ,     _/
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""
   
              UnPacKed By :  fly
               2005-04-29 23:00


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
fly老大,强,争取在5.1前发到51篇精华。
2005-4-29 23:30
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
3
最初由 萝卜 发布
fly老大,强,争取在5.1前发到51篇精华。


支持!!!呵呵!~
2005-4-30 07:29
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
4
研究研究。
2005-4-30 07:36
0
雪    币: 213
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
向fly兄学习!
2005-4-30 09:46
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
6
支持学习
2005-4-30 10:37
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
7
最初由 李逍遥 发布
向fly兄学习!

差点看错
2005-4-30 11:32
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
8
最初由 WiNrOOt 发布

差点看错


哈哈,我已经看错好几回了~
2005-4-30 12:09
0
雪    币: 458
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
一VC6程序,参照FLY老大的方法修改anit后,还是被检测到
2005-5-9 12:11
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
用修改版
跟踪一下看看是如何anti
2005-5-9 13:13
0
雪    币: 458
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
04A6000 >  E8 0E000000         call pk.004A6013>>>>>FlyODBG载入后,停在这
004A6005    8B5424 0C           mov edx,dword ptr ss:[esp+C]
004A6009    8382 B8000000 0D    add dword ptr ds:[edx+B8],0D
004A6010    33C0                xor eax,eax
004A6012    C3                  retn

按FLY老大方法,设置OllyDbg忽略所有异常选项。
用IsDebug插件去掉OllyDbg的调试器标志。用UnhExcFlt.DLL插件先Patch一下。

再Ctrl+G:CheckRemoteDebuggerPresent
77E9582B >  55                  push ebp>>>>>>>>来到这
77E9582C    8BEC                mov ebp,esp
77E9582E    837D 08 00          cmp dword ptr ss:[ebp+8],0
77E95832    56                  push esi
77E95833    74 35               je short kernel32.77E9586A
77E95835    8B75 0C             mov esi,dword ptr ss:[ebp+C]
77E95838    85F6                test esi,esi
77E9583A    74 2E               je short kernel32.77E9586A
77E9583C    6A 00               push 0
77E9583E    6A 04               push 4
77E95840    8D45 08             lea eax,dword ptr ss:[ebp+8]
77E95843    50                  push eax
77E95844    6A 07               push 7
77E95846    FF75 08             push dword ptr ss:[ebp+8]
77E95849    FF15 AC10E477       call dword ptr ds:[<&ntdll.NtQueryInfo>; ntdll.ZwQueryInformationProcess
77E9584F    85C0                test eax,eax
77E95851    7D 08               jge short kernel32.77E9585B
77E95853    50                  push eax
77E95854    E8 604BFCFF         call kernel32.77E5A3B9
77E95859    EB 16               jmp short kernel32.77E95871
77E9585B    33C0                xor eax,eax
77E9585D    3945 08             cmp dword ptr ss:[ebp+8],eax
77E95860    0F95C0              setne al
77E95863    8906                mov dword ptr ds:[esi],eax
77E95865    33C0                xor eax,eax
77E95867    40                  inc eax>>>>>>>>>修改为nop
77E95868    EB 09               jmp short kernel32.77E95873
77E9586A    6A 57               push 57
77E9586C    E8 924AFCFF         call kernel32.77E5A303
77E95871    33C0                xor eax,eax
77E95873    5E                  pop esi
77E95874    5D                  pop ebp
77E95875    C2 0800             retn 8

再Ctrl+G:IsProcessorFeaturePresent
77E6131B >  8B4424 04           mov eax,dword ptr ss:[esp+4]>>>>来到这,与FLY的不同?
77E6131F    83F8 40             cmp eax,40
77E61322    73 0A               jnb short kernel32.77E6132E
77E61324    0FB680 7402FE7F     movzx eax,byte ptr ds:[eax+7FFE0274]
77E6132B    C2 0400             retn 4
在函数末尾下断,Shift+F9后可中断,再取消断点。

再Alt+M 显示内存窗口,在第2个区段00401000段“设置内存访问断点”,再Shift+F9后可以中断,来到:
003A4055    893E                mov dword ptr ds:[esi],edi>>>>>>中断在这
003A4057    83C7 0C             add edi,0C
003A405A    83C6 04             add esi,4
003A405D    41                  inc ecx
003A405E    3B4D 0C             cmp ecx,dword ptr ss:[ebp+C]
003A4061  ^ 72 C7               jb short 003A402A
003A4063    833E 00             cmp dword ptr ds:[esi],0
003A4066    75 30               jnz short 003A4098

再Ctrl+F在整个段块搜索命令:test word ptr ds:[esi],20
003A3EBE    56                  push esi
003A3EBF    57                  push edi
003A3EC0    8B75 10             mov esi,dword ptr ss:[ebp+10]
003A3EC3    8B7D 0C             mov edi,dword ptr ss:[ebp+C]
003A3EC6    66:F706 2000        test word ptr ds:[esi],20>>>>找到这,修改 ①:test word ptr ds:[esi],8  ★
003A3ECB    74 46               je short 003A3F13>>>>>>>>②改je为jne
003A3ECD    66:F706 0200        test word ptr ds:[esi],2
003A3ED2    75 1F               jnz short 003A3EF3
003A3ED4    66:C706 0400        mov word ptr ds:[esi],4
003A3ED9    8B45 14             mov eax,dword ptr ss:[ebp+14]
003A3EDC    6A 01               push 1
003A3EDE    6A 00               push 0
003A3EE0    FF76 04             push dword ptr ds:[esi+4]
003A3EE3    6A 00               push 0
003A3EE5    FF75 18             push dword ptr ss:[ebp+18]
003A3EE8    FF50 50             call dword ptr ds:[eax+50]
003A3EEB    85C0                test eax,eax
003A3EED    74 38               je short 003A3F27>>>>>>>>③改为je short 003A3F13
003A3EEF    8907                mov dword ptr ds:[edi],eax
003A3EF1    EB 20               jmp short 003A3F13
003A3EF3    66:C706 0400        mov word ptr ds:[esi],4
003A3EF8    8B45 14             mov eax,dword ptr ss:[ebp+14]
003A3EFB    0FB756 02           movzx edx,word ptr ds:[esi+2]
003A3EFF    6A 01               push 1
003A3F01    52                  push edx
003A3F02    6A 00               push 0
003A3F04    FF76 04             push dword ptr ds:[esi+4]
003A3F07    FF75 18             push dword ptr ss:[ebp+18]
003A3F0A    FF50 50             call dword ptr ds:[eax+50]
003A3F0D    85C0                test eax,eax
003A3F0F    74 16               je short 003A3F27>>>>>>>>④改为je short 003A3F13
003A3F11    8907                mov dword ptr ds:[edi],eax
003A3F13    83C6 08             add esi,8
003A3F16    83C7 04             add edi,4
003A3F19    FF4D 08             dec dword ptr ss:[ebp+8]
003A3F1C  ^ 75 A8               jnz short 003A3EC6
003A3F1E    33C0                xor eax,eax
003A3F20    40                  inc eax
003A3F21    5F                  pop edi
003A3F22    5E                  pop esi
003A3F23    5D                  pop ebp
003A3F24    C2 1400             retn 14

在003A3F24处下断,Shift+F9后输入表处理完毕。

再shift+f9后就程序非法操作而中止了
2005-5-9 19:08
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
第2区段设置内存访问断点,再Shift+F9
也可以处理输入表后不忽略异常看看哪里异常导致退出

另外:上面的输入表处理方法不含特殊函数的处理
2005-5-9 19:20
0
雪    币: 280
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
下载一个去试试
2005-5-9 19:46
0
雪    币: 277
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
收藏文章好好学习学习!
2005-5-10 18:14
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
按FLY老大的步骤,我的为什么不一样呀,如果打补丁,只是把77E461A2    0F85 15040000     jnz kernel32.77E465BD
这里的JNZ改为NOP,运行还是直接退出,想手动改,但不知该改那个跳转,我用的系统是WIN2003的,另我用我的PEID092检测不出是什么加的壳,只显示"没有找到什么[重叠].那位老大给看一下
77E46157 >  68 F4040000       push 4F4
77E4615C    68 484EE577       push kernel32.77E54E48
77E46161    E8 90B5FCFF       call kernel32.77E116F6
77E46166    6A 04             push 4
77E46168    5B                pop ebx
77E46169    895D E0           mov dword ptr ss:[ebp-20],ebx
77E4616C    8B75 08           mov esi,dword ptr ss:[ebp+8]
77E4616F    8B06              mov eax,dword ptr ds:[esi]
77E46171    33FF              xor edi,edi
77E46173    8138 050000C0     cmp dword ptr ds:[eax],C0000005
77E46179    75 09             jnz short kernel32.77E46184
77E4617B    3978 14           cmp dword ptr ds:[eax+14],edi
77E4617E  ^ 0F85 A7FEFFFF     jnz kernel32.77E4602B
77E46184    897D DC           mov dword ptr ss:[ebp-24],edi
77E46187    57                push edi
77E46188    53                push ebx
77E46189    8D45 DC           lea eax,dword ptr ss:[ebp-24]
77E4618C    50                push eax
77E4618D    6A 07             push 7
77E4618F    E8 86BBFCFF       call kernel32.GetCurrentProcess
77E46194    50                push eax
77E46195    FF15 B810E177     call dword ptr ds:[<&ntdll.NtQueryInform>; ntdll.ZwQueryInformationProcess
77E4619B    85C0              test eax,eax
77E4619D    7C 09             jl short kernel32.77E461A8
77E4619F    397D DC           cmp dword ptr ss:[ebp-24],edi
77E461A2    0F85 15040000     jnz kernel32.77E465BD
77E461A8    A1 10E2E877       mov eax,dword ptr ds:[77E8E210]
77E461AD    3BC7              cmp eax,edi
77E461AF    74 15             je short kernel32.77E461C6
77E461B1    56                push esi
77E461B2    FFD0              call eax
77E461B4    83F8 01           cmp eax,1
77E461B7    0F84 02040000     je kernel32.77E465BF
77E461BD    83F8 FF           cmp eax,-1
77E461C0    0F84 F9030000     je kernel32.77E465BF
77E461C6    E8 42C5FCFF       call kernel32.77E1270D
77E461CB    A8 02             test al,2
77E461CD    0F85 28040000     jnz kernel32.77E465FB
77E461D3    E8 77110000       call <jmp.&ntdll.RtlGetThreadErrorMode>
77E461D8    A8 20             test al,20
77E461DA    0F85 1B040000     jnz kernel32.77E465FB
77E461E0    57                push edi
77E461E1    6A 30             push 30
77E461E3    8D85 04FFFFFF     lea eax,dword ptr ss:[ebp-FC]
77E461E9    50                push eax
77E461EA    6A 02             push 2
77E461EC    57                push edi
77E461ED    FF15 7C15E177     call dword ptr ds:[<&ntdll.NtQueryInform>; ntdll.ZwQueryInformationJobObject
77E461F3    85C0              test eax,eax
77E461F5    0F8D F3030000     jge kernel32.77E465EE
77E461FB    8B06              mov eax,dword ptr ds:[esi]
77E461FD    8B08              mov ecx,dword ptr ds:[eax]
77E461FF    894D 9C           mov dword ptr ss:[ebp-64],ecx
77E46202    8B48 0C           mov ecx,dword ptr ds:[eax+C]
77E46205    894D A0           mov dword ptr ss:[ebp-60],ecx
77E46208    8138 060000C0     cmp dword ptr ds:[eax],C0000006
77E4620E  ^ 0F84 2FFEFFFF     je kernel32.77E46043
2005-5-18 13:43
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
16
1、不同系统平台的anti未必一样,Win2000下没有CheckRemoteDebuggerPresent,Win2K3有没有这个不清楚
2、超级自动注册申请王升级了吧,加入了自校验
2005-5-18 13:51
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢老大,我又重新跟了一下,出现以下的问题,望给予帮助
在WINDOWS2003下有CheckRemoteDebuggerPresent函数,我在此处和IsProcessorFeaturePresent处下断。
从UnhandledExceptionFilter函数出来后返回到下面代码:
77F35275    0AC0                     or al,al
77F35277    74 0C                    je short ntdll.77F35285(此处不跳)
77F35279    5B                       pop ebx
77F3527A    59                       pop ecx
77F3527B    6A 00                    push 0
77F3527D    51                       push ecx
77F3527E    E8 D0FFFFFF              call ntdll.ZwContinue
从此处进入,代码如下:
77F35253 >  B8 22000000              mov eax,22
77F35258    BA 0003FE7F              mov edx,7FFE0300
77F3525D    FFD2                     call edx
77F3525F    C2 0800                  retn 8
从CALL处进入,代码如下:
7FFE0300    8BD4                     mov edx,esp
7FFE0302    0F34                     sysenter
7FFE0304    C3                       retn
在SYSENTER命令处不知该如何跟踪,F8或F9运行就退出,不能达到断点处。
2005-5-22 17:12
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
18
始终建议:
你可以找教程中的例子跟随教程演示一下

另外,不清楚Obsidium在Win2K3是否有其他anti方式
2005-5-22 17:53
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我就是用的1.9版的,在我单位的XP专业版上也是同样的情况,且没有CheckRemoteDebuggerPresent函数

能否给出SYSENTER函数的常规拦截方法,谢谢
2005-5-23 07:21
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
20
sysenter是系统异常处理
XP上没有CheckRemoteDebuggerPresent函数?SP2有,没有更好

不行就放弃吧
放弃也是不错的选择
2005-5-23 09:23
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
知道了 ,不能给自己找麻烦
2005-5-23 09:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
在PE Header下面的第2区段设置内存访问断点。Shift+F9中断下来取消断点

00B68155 893E mov dword ptr ds:[esi],edi
//中断在这里


这个东西升级了,我用的其他的程序,在pe header下面的第2个区段设置断点

断到后却不是你说的地方,而是

0090E183    8B06                 mov eax,dword ptr ds:[esi]    //断在这
0090E185    85C0                 test eax,eax
0090E187    74 18                je short 0090E1A1

是不是程序不一样的原因呢?
2005-6-5 23:15
0
雪    币: 296
活跃值: (260)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
23
最初由 只喝芬达的狗 发布

这个东西升级了,我用的其他的程序,在pe header下面的第2个区段设置断点
断到后却不是你说的地方,而是
........

我记得我是下在401000的
2005-6-5 23:28
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
24
PE Header下面的第2区段
这里是00401000

另外:听说新版加了不少检验,小心重启
2005-6-5 23:31
0
游客
登录 | 注册 方可回帖
返回
//