首页
社区
课程
招聘
一个简单的Armadillo脱壳破解
发表于: 2006-5-1 14:51 7728

一个简单的Armadillo脱壳破解

2006-5-1 14:51
7728
【文章标题】: FlashVideoStudio1.5破解版脱壳
【文章作者】: Winter[CZG][D.4s][BCG]
【作者邮箱】: spsgeyro@gmail.com
【软件名称】: FlashVideoStudio1.5
【软件大小】: 6.68 MB
【下载地址】: http://vip.hanzify.org/lordfox/MyHHOpus/todo.rar
【加壳方式】: Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks
【保护方式】: 注册码
【使用工具】: OD,PEID,IMPREC
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  很久没学习脱壳了,今日在汉化新世纪论坛逛的时候发现这个软件,遂跟着教程学脱。
  由于是要汉化,但是破解文件本身又加了壳,所以先输入破解后的注册名和序列号,然后OD载入:
  00829000 >  60              PUSHAD
  00829001    E8 00000000     CALL FVStudio.00829006
  00829006    5D              POP EBP
  00829007    50              PUSH EAX
  00829008    51              PUSH ECX
  
  忽略所有异常,下断BP OpenMutexA,shift+F9,来到断点处:
  7C817227 >  8BFF            MOV EDI,EDI
  7C817229    55              PUSH EBP
  7C81722A    8BEC            MOV EBP,ESP
  7C81722C    51              PUSH ECX
  
  0012F770   008017B8  /CALL 到 OpenMutexA
  0012F774   001F0001  |Access = 1F0001
  0012F778   00000000  |Inheritable = FALSE
  0012F77C   0012FDB0  \MutexName = "C64::DABECE0C5A"     //记下0012FDB0这个值
  
  ctrl+G,401000,输入如下代码:
  00401000    60              PUSHAD
  00401001    9C              PUSHFD
  00401002    68 B0FD1200     PUSH 12FDB0                              ; ASCII "C64::DABECE0C5A"
  00401007    33C0            XOR EAX,EAX
  00401009    50              PUSH EAX
  0040100A    50              PUSH EAX
  0040100B    E8 105A417C     CALL kernel32.CreateMutexA
  00401010    9D              POPFD
  00401011    61              POPAD
  00401012  - E9 1062417C     JMP kernel32.OpenMutexA
  
  然后在401000上点击鼠标右键,选择新建OEP,然后复制数据区二进制代码:
  60 9C 68 B0 FD 12 00 33 C0 50 50 E8 10 5A 41 7C 9D 61 E9 10 62 41 7C 90
  
  继续F9,断下后取消断点,ctrl+G返回401000撤销修改,然后下断:BP GetModuleHandleA+05(这个程序BP GetModuleHandleA似乎断下后返回不对)
  
  011EF168  /011EF7C0
  011EF16C  |7C822B47  返回到 kernel32.7C822B47 来自 kernel32.GetModuleHandleA
  011EF170  |00000000
  011EF174  |7C822B8F  返回到 kernel32.7C822B8F 来自 kernel32.7C822B40
  
  011EF73C  /011EF858
  011EF740  |4C52D4A7  返回到 msctfime.4C52D4A7 来自 kernel32.GetModuleHandleA
  011EF744  |011EF748  ASCII "I:\WINDOWS\system32\ntdll.dll"
  
  0012F710   0012F778
  0012F714   008008F3  返回到 FVStudio.008008F3 来自 kernel32.GetModuleHandleA
  0012F718   00000000
  0012F71C   7C82B3C8  返回到 kernel32.7C82B3C8 来自 ntdll.ZwOpenMutant
  
  001294FC  /0012EC44
  00129500  |01217105  返回到 01217105 来自 kernel32.GetModuleHandleA
  00129504  |0122BC1C  ASCII "kernel32.dll"
  00129508  |0122CEC4  ASCII "VirtualAlloc"
  
  001294FC  /0012EC44
  00129500  |01217122  返回到 01217122 来自 kernel32.GetModuleHandleA
  00129504  |0122BC1C  ASCII "kernel32.dll"
  00129508  |0122CEB8  ASCII "VirtualFree"
  
  然后shift+F9,一次中断后取消断点:
  00129260  /00129500
  00129264  |01205FC9  返回到 01205FC9 来自 kernel32.GetModuleHandleA
  00129268  |001293B4  ASCII "kernel32.dll"
  
  alt+f9返回:
  01205FC9    8B0D AC402301   MOV ECX,DWORD PTR DS:[12340AC]
  01205FCF    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
  01205FD2    A1 AC402301     MOV EAX,DWORD PTR DS:[12340AC]
  01205FD7    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
  01205FDA    75 16           JNZ SHORT 01205FF2
  01205FDC    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
  01205FE2    50              PUSH EAX
  01205FE3    FF15 BC622201   CALL DWORD PTR DS:[12262BC]              ; kernel32.LoadLibraryA
  01205FE9    8B0D AC402301   MOV ECX,DWORD PTR DS:[12340AC]
  01205FEF    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
  01205FF2    A1 AC402301     MOV EAX,DWORD PTR DS:[12340AC]
  01205FF7    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
  01205FFA    0F84 2F010000   JE 0120612F                         //Magic Jump,改成JMP,然后去01206144下断,F9运行
  01206000    33C9            XOR ECX,ECX
  01206002    8B07            MOV EAX,DWORD PTR DS:[EDI]
  01206004    3918            CMP DWORD PTR DS:[EAX],EBX
  01206006    74 06           JE SHORT 0120600E
  01206008    41              INC ECX
  
  01206144    EB 03           JMP SHORT 01206149     //在这里下断点,断下以后取消断点,撤销magic jump的修改
  01206146    D6              SALC
  01206147    D6              SALC
  
  然后alt+M,在401000上下内存访问断点
  0121F968    8B12            MOV EDX,DWORD PTR DS:[EDX]        //在这里断下,F8单步下去
  0121F96A    8955 DC         MOV DWORD PTR SS:[EBP-24],EDX
  0121F96D    834D FC FF      OR DWORD PTR SS:[EBP-4],FFFFFFFF
  
  0121F9D9    8B50 60         MOV EDX,DWORD PTR DS:[EAX+60]
  0121F9DC    3350 44         XOR EDX,DWORD PTR DS:[EAX+44]
  0121F9DF    3350 1C         XOR EDX,DWORD PTR DS:[EAX+1C]
  0121F9E2    2BCA            SUB ECX,EDX
  0121F9E4    FFD1            CALL ECX                          ; FVStudio.004D17BF   //这里F7进去,就到OEp啦
  
  然后lordPE脱壳,IMPREC进行修复,OEP:000D17BF,自动搜索,获取输入表以后剪切无效指针,修复。
  
  为了完美一点可以用peditor删除.text1,.adata,.data1,.pdata四个区段,然后重建可执行文件。
  
  运行以后跳出要求注册的NAG,由于已经脱壳,只要把他跳过即可。
  查找ascII,双击username,跟踪来到:
  0041A236    E8 C572FEFF     CALL dumped_.00401500        //F9以后断下,注意堆栈变化
  
  当堆栈出现如下时,F8跟踪:
  0012DD60   0012E658  ASCII "HDQ"
  0012DD64   0012E658  ASCII "HDQ"
  
  00419000    8BCE            MOV ECX,ESI
  00419002    E8 295C0000     CALL dumped_.0041EC30
  00419007    E8 F484FEFF     CALL dumped_.00401500
  0041900C    84C0            TEST AL,AL
  0041900E    6A 00           PUSH 0
  00419010    6A 32           PUSH 32
  00419012    74 0B           JE SHORT dumped_.0041901F             //这里改成JMP后启动无NAG了
  00419014    8B4E 1C         MOV ECX,DWORD PTR DS:[ESI+1C]
  00419017    68 83000000     PUSH 83
  0041901C    51              PUSH ECX
  0041901D    EB 09           JMP SHORT dumped_.00419028
  
  还有点疑问需要请教诸位大侠,脱壳完成后用PEID查看仍旧显示Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks,应该如何优化?
  
--------------------------------------------------------------------------------
                                                       2006年05月01日 14:44:08

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
53 52
2006-5-1 15:14
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
findprotected哪里有?
2006-5-1 15:27
0
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
最初由 forgot 发布
findprotected哪里有?

china放到看雪的FTP上了
2006-5-1 15:29
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
5
学习+支持~
2006-5-1 15:37
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
6
最初由 forgot 发布
findprotected哪里有?


工具版就有,而且已经到处有~

2006-5-1 15:38
0
雪    币: 47147
活跃值: (20410)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
脱壳完成后用PEID查看仍旧显示Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks,应该如何优化?


修正PE文件头Armadillo加壳标志。
MajorLinkerVersion
MinorLinkerVersion

加壳后,这里值是(53 52)SR,你改回默认的即可。
2006-5-1 15:48
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
8

MajorLinkerVersion
MinorLinkerVersion
两处清0,很多高手都是这么说的~

2006-5-1 15:52
0
雪    币: 154
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
MajorLinkerVersion:           0x53
   MinorLinkerVersion:           0x52  -> 83.82
怎么清0?
改成
   MajorLinkerVersion:           0x00
   MinorLinkerVersion:           0x00  -> 0.00  ??
2006-10-20 22:26
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
你可以用PEtools察看此文件的PE头信息
就会看见MajorLinkerVersion、MinorLinkerVersion
修改为00
2006-10-21 16:32
0
游客
登录 | 注册 方可回帖
返回
//