首页
社区
课程
招聘
求助:脱了N天啊,幻影2.33
2004-4-29 23:51 9064

求助:脱了N天啊,幻影2.33

2004-4-29 23:51
9064
收藏
免费 6
打赏
分享
最新回复 (14)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-4-30 06:35
2
0
转fly教程.:D
幻影 V2.33 脱壳+修复――dbpe.exe主程序
 
【幻影下载】:  http://dbpe.allit.net/  (或者网上搜索)
【软件大小】:  2.94 M

【软件简介】:幻影 是一个为 WINDOWS 下的EXE,DLL,OCX.32位可运行文件加密系统。 它为程序加上一层坚硬的保护壳。还可以为程序设置限制注册功能。即使你没有程序的原代码你也可以用幻影在程序上加上运行次数限制,运行天数限制,运行有效日期限制。加密程序支持Windows98,Windows Me,Windows 2000,Windows XP。

【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【调试环境】:WinXP、flyODBG、PEiD、LordPE、ImportREC、Idt Tool

―――――――――――――――――――――――――――――――――  
【过    程】:         
         

Ollydbg1.09D 中文修改版 ―― flyODBG   下载页面:
http://tongtian.net/pediybbs/viewtopic.php?t=1532

OllyDbg各类插件:可以下载 花指令去除器、IsDebug等插件
http://www.pediy.com/tools/Debuggers/ollydbg/plugin.htm  

        
设置Ollydbg忽略所有的异常选项。老规矩:用IsDebug 1.4插件去掉flyODBG的调试器标志。载入后弹出“是压缩代码――要继续进行分析吗?”,点“否”。

―――――――――――――――――――――――――――――――――
一、浅谈 幻影 的调试

幻影 是国产加壳程序的骄傲!虽然有了脱壳机,但幻影依旧是值得研究的。幻影 最大的特点可谓是其反跟踪了,幻影的Anti能力之强在Xtreme-Protector未出之前是首屈一指的。正如 CoDe_inJect 大侠所言:“这个壳在国内如日中天,奥妙在于哪里?就在于anti做得比较完善,它是我见到的最早使用驱动的壳,虽然驱动的运用仅仅是为了在NT下切到Ring0,但他开创了壳使用驱动的先例。对idt进行修改,改变了int 1 and int 3的地址。”

虽然 幻影 威力巨大,但还是有许多的Cracker不顾蓝屏死机、硬盘伤痕而潜心研究,共享出宝贵的资料!感谢  

偶觉得用修改的Ollydbg+IsDebug+花指令去除器等插件能够比较“爽”的调试幻影。  

对于 幻影 对IDT的修改,偶找了个小工具:tMD[CsP]的Idt Tool,这样用Ollydbg调试出错后用Idt Tool恢复一下调试前的IDT就不会让 幻影 来帮偶们自动重启啦。
  
很忙,抽点时间再次分析一下,算是对前几天发的《1分钟寻找 幻影 V2.33 壳的OEP》的补充吧。

―――――――――――――――――――――――――――――――――
二、避开IAT加密,得到正确的输入表

004FE000     EB 20                jmp short dbpe.004FE022//进入OD后停在这!

F9运行,弹出要求注册的对话框。此时在GetProcAddress处下硬件执行断点。
当然要点“试用”啦,返回OD,再次中断。

77E5A5FD     55                  push ebp//断在这!然后取消这个硬件断点
77E5A5FE     8BEC                mov ebp,esp
77E5A600     51                  push ecx
77E5A601     51                  push ecx
77E5A602     53                  push ebx
77E5A603     57                  push edi
77E5A604     8B7D 0C             mov edi,dword ptr ss:[ebp+C]
77E5A607     BB FFFF0000         mov ebx,0FFFF
77E5A60C     3BFB                cmp edi,ebx
77E5A60E     0F86 6B83FFFF       jbe kernel32.77E5297F

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
看看GetProcAddress堆栈:

0012FF78    7FF80D42  /CALL 到 GetProcAddress 来自 7FF80D3C ★★这里!
0012FF7C    77DA0000  |hModule = 77DA0000 (advapi32)
0012FF80    004D0E7E  \ProcNameOrOrdinal = "RegCloseKey"
0012FF84    7FF8571A  ASCII "user.dat"
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

Ctrl+G:7FF80D42  在7FF80D42处再下 硬件执行 断点!F9运行,断下!

运行 hoto 大侠的 花指令去除器 ,填入 地址=7FF7EEBB 大小=FFFF  呵呵,大范围搜索,弹出去除了1842个花指令,看看效果:牛!  看来 hoto 大侠是在分析 幻影 的时候写这个插件的,呵呵。

7FF80D35     50                  push eax
7FF80D36     FFB5 F9C64200       push dword ptr ss:[ebp+42C6F9]
7FF80D3C     FF95 02854300       call dword ptr ss:[ebp+438502]; kernel32.GetProcAddress
7FF80D42     90                  nop//断在这!然后取消断点
7FF80D43     90                  nop
  …… ……  省 略  …… ……
7FF80D9F     90                  nop
7FF80DA0     90                  nop
7FF80DA1     3985 45134300       cmp dword ptr ss:[ebp+431345],eax; //EAX=正确函数
7FF80DA7     75 4B               jnz short 7FF80DF4
7FF80DA9     90                  nop
7FF80DAA     90                  nop
  …… ……  省 略  …… ……
7FF80DD4     90                  nop
7FF80DD5     90                  nop
7FF80DD6     C685 547C4200 01    mov byte ptr ss:[ebp+427C54],1
7FF80DDD     90                  nop
7FF80DDE     90                  nop
  …… ……  省 略  …… ……
7FF80E24     90                  nop
7FF80E25     90                  nop
7FF80E26     80BD 547C4200 01    cmp byte ptr ss:[ebp+427C54],1
7FF80E2D     0F85 59030000       jnz 7FF8118C
7FF80E33     90                  nop
  …… ……  省 略  …… ……
7FF81036     90                  nop
7FF81037     90                  nop
7FF81038     8B85 7CD84200       mov eax,dword ptr ss:[ebp+42D87C]
7FF8103E     90                  nop
7FF8103F     90                  nop
  …… ……  省 略  …… ……
7FF8106F     90                  nop
7FF81070     90                  nop
7FF81071     33D2                xor edx,edx
7FF81073     90                  nop
7FF81074     90                  nop
  …… ……  省 略  …… ……
7FF810C4     90                  nop
7FF810C5     90                  nop
7FF810C6     03F8                add edi,eax
7FF810C8     90                  nop
7FF810C9     90                  nop
  …… ……  省 略  …… ……
7FF810F8     90                  nop
7FF810F9     90                  nop
7FF810FA     89BD 4C7C4200       mov dword ptr ss:[ebp+427C4C],edi
7FF81100     90                  nop
7FF81101     90                  nop
  …… ……  省 略  …… ……
7FF811E1     39BD D7D14200       cmp dword ptr ss:[ebp+42D1D7],edi
7FF811E7     76 10               jbe short 7FF811F9
7FF811E9     90                  nop
7FF811EA     90                  nop
7FF811EB     90                  nop
7FF811EC     90                  nop
7FF811ED     90                  nop
7FF811EE     89BD D7D14200       mov dword ptr ss:[ebp+42D1D7],edi//①、NOP掉! ★★★
  …… ……  省 略  …… ……
7FF811DF     90                  nop
7FF811E0     90                  nop
7FF811E1     39BD D7D14200       cmp dword ptr ss:[ebp+42D1D7],edi
7FF811E7     76 10               jbe short 7FF811F9
  …… ……  省 略  …… ……
7FF8122D     90                  nop
7FF8122E     90                  nop
7FF8122F     89BD D3D14200       mov dword ptr ss:[ebp+42D1D3],edi//②、NOP掉! ★★★
7FF81235     90                  nop
  …… ……  省 略  …… ……
7FF8126C     90                  nop
7FF8126D     890F                mov dword ptr ds:[edi],ecx ★★★
                       //③、改为mov dword ptr ds:[edi],eax  呵呵,正确的函数写入正确的地址  

7FF81272     90                  nop
7FF81273     90                  nop
7FF81274     83C6 04             add esi,4
7FF81277     90                  nop
7FF81278     90                  nop
7FF81279     90                  nop
7FF8127A     90                  nop
7FF8127B     90                  nop
7FF8127C     83C7 04             add edi,4
  …… ……  省 略  …… ……
7FF81296     E9 71F9FFFF         jmp 7FF80C0C//循环!

OK,修改3个地方偶就得到了完整的输入表啦!

1、7FF811EE   mov dword ptr ss:[ebp+42D1D7],edi//①、NOP掉!
2、7FF8122F   mov dword ptr ss:[ebp+42D1D3],edi//②、NOP掉!
3、7FF8126D   mov dword ptr ds:[edi],ecx
       改为   mov dword ptr ds:[edi],eax//正确的函数写入正确的地址

1和2这两处NOP掉是避免 幻影 对 地址指针 的加密,这样函数就写入正确的地址了。

―――――――――――――――――――――――――――――――――
二、寻找OEP,DUMP程序

可以参看偶前几天发的笔记:《1分钟寻找 幻影 V2.33 壳的OEP》
http://tongtian.net/pediybbs/viewtopic.php?p=14280

不用麻烦,在改完上面的3个地方后,Ctrl+F在当前位置下查找命令:jmp eax  在7FF8BFE7处 ,这就是 ☆梦寐以求☆ 的OEP一跳  可以在其上的POPAD的7FF8BFDB内存处下 内存访问 断点,F9断在7FF8BFDB

7FF8BFDB     61                  popad  //断在这!  
7FF8BFDC     58                  pop eax ;00401000//这就是OEP值
7FF8BFDD     83F8 FF             cmp eax,-1
7FF8BFE0     75 05               jnz short 7FF8BFE7
7FF8BFE2     33C0                xor eax,eax
7FF8BFE4     C2 0C00             retn 0C
7FF8BFE7     FFE0                jmp eax//飞向光明之巅!

00401000     EB 10               jmp short 00401012//可以在这儿用LordPE纠正ImageSize后完全DUMP这个进程
00401002     66:623A             bound di,dword ptr ds:[edx]
00401005     43                  inc ebx
00401006     2B2B                sub ebp,dword ptr ds:[ebx]
00401008     48                  dec eax
00401009     4F                  dec edi
0040100A     4F                  dec edi
0040100B     4B                  dec ebx
0040100C     90                  nop
0040100D     E9 30844B00         jmp 008B9442
00401012     A1 23844B00         mov eax,dword ptr ds:[4B8423]
00401017     C1E0 02             shl eax,2
0040101A     A3 27844B00         mov dword ptr ds:[4B8427],eax
0040101F     52                  push edx
00401020     6A 00               push 0
00401022     E8 3B5F0B00         call 004B6F62 ; jmp to kernel32.GetModuleHandleA

――――――――――――――――――――――――
三、修正部分地址

幻影的主程序还有一些地址加密:

004B6E58     FF25 08014D80       jmp dword ptr ds:[804D0108]
004B6E5E     FF25 0C014D80       jmp dword ptr ds:[804D010C]
  …… ……  省 略  …… ……
004B7302     FF25 B8074D80       jmp dword ptr ds:[804D07B8]
004B7308     FF25 BC074D80       jmp dword ptr ds:[804D07BC]

这些地方的[804D0108]是经过修改了,此时修复输入表还是无法运行的。不过偶们可以再次简单处理使其指向正确的地址。

把上面地址段内的[80XXXXXX]前面的80全部替换成00,就OK啦。 呵呵  

004B6E58     FF25 08014D00       jmp dword ptr ds:[4D0108]   ; advapi32.RegCloseKey
004B6E5E     FF25 0C014D00       jmp dword ptr ds:[4D010C]   ; advapi32.RegCreateKeyExA
004B6E64     FF25 10014D00       jmp dword ptr ds:[4D0110]   ; advapi32.RegFlushKey
004B6E6A     FF25 14014D00       jmp dword ptr ds:[4D0114]   ; advapi32.RegOpenKeyExA
004B6E70     FF25 18014D00       jmp dword ptr ds:[4D0118]   ; advapi32.RegQueryValueExA

可以直接在Ollydbg里修改后再DUMP程序,也可以DUMP之后用16进制工具修改。
注意:不要“滥杀”无辜! 也不能遗漏。改的只是jmp dword ptr ds:[80XXXXXX]的前2位:80->00

―――――――――――――――――――――――――――――――――
四、修复输入表

运行ImportREC,选择这个进程。把OEP改为00001000,RVA=000D0108 大小=00000CF0 点IT AutoSearch,点“Get Import”,CUT掉几个无效函数。FixDump,正常运行!  
   
虽然 幻影 主程序能够正常运行了,但是执行加壳功能时会提示“建立数据文件错误!加密失败!”,呵呵,这个暗桩偶就不追了,有兴趣就自己再去研究吧,或者对比swift大侠的破解版分析。

相信 D Boy 老师的 幻影 新版加壳系统就快“出炉”了。

―――――――――――――――――――――――――――――――――
     
                                 
         ,     _/  
        /| _.-~/            \_     ,        青春都一饷
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名  
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\  
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""

     

     Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]

                2004-01-08  22:22
雪    币: 217
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kanezhangwei 2004-4-30 08:25
3
0
朋友,谢谢,但是这个东西根本没有试用的啊 晕死了:(
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-4-30 09:20
4
0
最初由 kanezhangwei 发布
朋友,谢谢,但是这个东西根本没有试用的啊 晕死了:(

UnDBPE伺候:D
雪    币: 217
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kanezhangwei 2004-4-30 10:42
5
0
2.33没用啊,只有手工啊:(
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-4-30 10:46
6
0
对2.33应该是效果最好的.
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2004-4-30 14:03
7
0
最初由 kanezhangwei 发布
朋友,谢谢,但是这个东西根本没有试用的啊 晕死了:(


需要注册才能进入?
呵呵
雪    币: 217
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kanezhangwei 2004-4-30 18:06
8
0
最初由 fly 发布


需要注册才能进入?
呵呵


老大看见了就不用要袖手旁观啊:(
雪    币: 177
活跃值: (2101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xingbing 2004-5-13 17:31
9
0
有没有脱幻影2.33加壳软件?
雪    币: 233
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
shaitan 1 2004-5-13 21:00
10
0
二哥的FTP有多种幻影版下载

玩它N天了,你的电脑质量好,不怕坏哈.....兰屏、真兰
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 26 2004-5-13 21:03
11
0
需要注册的看我的那片...
雪    币: 400
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
myky 2004-5-15 05:23
12
0
我也郁闷的很
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dy0511 2004-12-11 22:03
13
0
EAX=0052D75B
ES:[EDI]=[F87D2560]=???
是怎么回事啊?
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
vrowang123 1 2004-12-12 09:16
14
0
我有个幻影2.33注册版家的软件undepe搞不掉,要不要发上来?
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
magic886 2005-1-24 23:22
15
0
请教
幻影的主程序还有一些地址加密:

004B6E58     FF25 08014D80       jmp dword ptr ds:[804D0108]
004B6E5E     FF25 0C014D80       jmp dword ptr ds:[804D010C]
  …… ……  省 略  …… ……
004B7302     FF25 B8074D80       jmp dword ptr ds:[804D07B8]
004B7308     FF25 BC074D80       jmp dword ptr ds:[804D07BC]
  怎么得来的???
游客
登录 | 注册 方可回帖
返回