首页
社区
课程
招聘
[分享]Themida脱壳(VC++ 7.0之Stolen Code还原的一种思路)
发表于: 2007-4-9 16:54 21577

[分享]Themida脱壳(VC++ 7.0之Stolen Code还原的一种思路)

2007-4-9 16:54
21577

【文章标题】: Themida脱壳(VC++ 7.0之Stolen Code还原的一种思路)
【文章作者】: wynney
【软件名称】: 奇迹世界
【下载地址】: 下面FTP打包下载
【编写语言】: Microsoft Visual C++ 7.0
【作者声明】: 一个朋友让帮弄的,看了下,借用okdodo的脚本到达伪OEP,被抽取了近60字节
--------------------------------------------------------------------------------
【详细过程】

  一、前言
  
  很多加壳软件对OEP的VM大多数对VC++的VM一般都很多,而且基本上是最多的,其他语言就稍少些了,VB就更少了=没有,呵呵
  
  二、达到伪OEP[用脚本]
  
  如果大家想研究如何修复IAT,到达伪OEP的话,可以研究下okdodo的脚本,大大减少体力劳动,感谢ing
  
  


00610E50 68 1CAE6000 push 0060AE1C ; 脚本停在这,记住①,Call 00610E50,看堆栈
00610E55 64:A1 00000000 mov eax, dword ptr fs:[0]
00610E5B 50 push eax
00610E5C 8B4424 10 mov eax, dword ptr [esp+10]
00610E60 896C24 10 mov dword ptr [esp+10], ebp
00610E64 8D6C24 10 lea ebp, dword ptr [esp+10]
00610E68 2BE0 sub esp, eax
00610E6A 53 push ebx
00610E6B 56 push esi
00610E6C 57 push edi
00610E6D 8B45 F8 mov eax, dword ptr [ebp-8]
00610E70 8965 E8 mov dword ptr [ebp-18], esp
00610E73 50 push eax
00610E74 8B45 FC mov eax, dword ptr [ebp-4]
00610E77 C745 FC FFFFFFF>mov dword ptr [ebp-4], -1
00610E7E 8945 F8 mov dword ptr [ebp-8], eax
00610E81 8D45 F0 lea eax, dword ptr [ebp-10]
00610E84 64:A3 00000000 mov dword ptr fs:[0], eax
00610E8A C3 retn ; 直接F4,F8到VM中

0060AF20 3D 00100000 cmp eax, 1000 ; 停在这,记住④ ,Call 0060AF20
0060AF25 73 0E jnb short 0060AF35
0060AF27 F7D8 neg eax
0060AF29 03C4 add eax, esp
0060AF2B 83C0 04 add eax, 4
0060AF2E 8500 test dword ptr [eax], eax
0060AF30 94 xchg eax, esp
0060AF31 8B00 mov eax, dword ptr [eax]
0060AF33 50 push eax
0060AF34 C3 retn ; 直接F4,F8到VM中

00E85C5F FF32 push dword ptr [edx] ; ■停在这,kernel32.GetVersionExA
00E85C61 E9 A0490400 jmp 00ECA606
00E85C66 21C2 and edx, eax
00E85C68 05 F047F263 add eax, 63F247F0
00E85C6D 2D DA021626 sub eax, 261602DA

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

收藏
免费 7
支持
分享
最新回复 (34)
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
呵呵,不错,支持下!我也是这样改Stolen Code的.
2007-4-9 17:06
0
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
另外,奇迹世界公测了么?内测的时候我玩过两个礼拜.
2007-4-9 17:08
0
雪    币: 148
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很有味道... 原来可以使用这个方法...  big 谢谢 LZ
2007-4-9 19:58
0
雪    币: 210
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
学习思路和方法最重要
2007-4-10 08:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大侠说的很清晰!.

谢谢!..
2007-4-10 11:12
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
目标程序打包下载,FTP:/upload/09.04.07.Themida.UnPacking.SunGame.By.wynney/

连接不上啊?!
2007-4-10 12:15
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
8

顶LZ,学习!
2007-4-10 12:52
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
9
学习,另外,我偷偷给你的那个东西搞好了没有
2007-4-10 21:12
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
10
一样的处理方法
你给我=没看见!
2007-4-10 21:30
0
雪    币: 201
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
现在运行THEMIDA脚本(for IAT restore)可以运行成功

就是这是这个软件(ARP防火墙网络版)

http://w11.easy-share.com/971437.html

帮忙脱一下,是DELPHI的

写个详细的过程好吗?

各位老大帮忙那,小弟网吧急用,明天就要到期了,那样小弟的网吧就要关门了
2007-4-11 11:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
猛壳,还不敢去脱,先学习学习
2007-4-11 12:42
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主,你用的什么版本的OD阿,我的OD都没法调试奇迹世界,更不要说脱壳了,能不能给个下载
2007-4-28 10:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
三、找回Stolen Code
  
  Alt+M,Ctrl+B搜索这么一段代码,VC++ 7.0都有的,而且一般VM不到这里:)

  
引用:
  xor     eax, eax
  cmp     dword ptr [ecx+E8], esi
  setne   al
  mov     dword ptr [ebp-1C], eax
  push    1
  
  33 C0 39 B1 E8 00 00 00 0F 95 C0 89 45 E4 6A 01

关于上面的 VC+6.0 的特征码是什么呢??请 熟悉的高手们说一下..

看得出来,我们需要找的4点中⑷、⑸两点是最麻烦的,但是,大家看看⑷、⑸、⑹、⑺有啥关系?
  
   
    以 ⑺为基点有以下关系
    ◆=③
    ⑴=②,⑵=①,⑶=④
    ⑷=⑺-04,⑸=⑺+08,⑹=⑺+0C

而这句话 ⑷=⑺476510-04=??多少?是怎么算出来的?用了什么工具。。?

如果换成VC+6.0的话。 应该怎么去找呢???

   
    那么其他的都一样的啦
  
    对VC++ 7.0而言,以上关系是永远存在的
2007-4-28 14:13
0
雪    币: 148
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
xor     ebx, ebx
       mov     dword ptr [ebp-4], ebx
       push    2
       pop     edi
       push    edi
2007-4-28 19:17
0
雪    币: 211
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Alt+M,Ctrl+B搜索这么一段代码,VC++ 7.0都有的,而且一般VM不到这里:)

  
引用:
  xor     eax, eax
  cmp     dword ptr [ecx+E8], esi
  setne   al
  mov     dword ptr [ebp-1C], eax
  push    1
  
  33 C0 39 B1 E8 00 00 00 0F 95 C0 89 45 E4 6A 01
   
  找到了0060CC7C,Ctrl+G:0060CC7C,看看被VM了不少字节,可以确认0060CBC3就是OEP了
  
  
引用:
  0060CBFA    8B56 08          mov     edx, dword ptr [esi+8]
  0060CBFD    8915 2CD86F00    mov     dword ptr [6FD82C], edx
  0060CC03    8B76 0C          mov     esi, dword ptr [esi+C]
  0060CC06    81E6 FF7F0000    and     esi, 7FFF
  0060CC0C    8935 20D86F00    mov     dword ptr [6FD820], esi
   

有几点疑惑请大侠解释一下
疑惑一:Ctrl+B找到特征处,Ctrl+G过去后,OEP是不是向上找,到ret语句为止?
疑惑二:在0060CC0C    8935 20D86F00    mov     dword ptr [6FD820], esi这句处的[6FD820]也就是那个基点(7)是怎么出来的?如何确定它的值?这点没弄清楚那(4)(5)(6)就都出不来了,恳请大侠解释一下,谢谢
2007-5-4 09:02
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
高手的说,支持下!
2007-5-4 12:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
原来如此!!!!
2007-5-4 22:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好文章,学习了!
2007-5-7 10:26
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
按shift+F9到达的地方跟LZ的不一样呢
2007-5-8 19:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我想尋求版主   要破解一個群發軟件   他用vc寫的請會的高手幫我
長期配合或 論件計酬    拜託
我qq  239111138
msn  plwen123@hotmail.com
2007-5-8 19:57
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
这么好的帖子收下了,
2007-5-25 20:10
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
为什么我就还原后  还是运行错误呢?
2007-5-29 17:11
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
在Code段F2,Shift+F9

我怎么在code段F2了断不了,程序跑完了也没断下来,你们是不是用od内存查看里指示的代码段地址上下断点(00410000),搂主好人做到底,给说清楚点吧!
2007-5-30 00:00
0
雪    币: 320
活跃值: (104)
能力值: (RANK:180 )
在线值:
发帖
回帖
粉丝
25
看過一些解themida的 好像都沒說到重點.............VM

看了也是白看...................
2007-5-31 17:49
0
游客
登录 | 注册 方可回帖
返回
//