飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 15440|回复: 26

Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 脱壳分析

  [复制链接]
  • TA的每日心情
    难过
    前天 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-9-19 13:27:49 | 显示全部楼层 |阅读模式
    【破文标题】Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 脱壳分析
    【破文作者】飘云
    破解平台】WinXp
    【作者邮箱】piaoyun04@163.com
    【软件名称】彩尊圣手黄金版-全国彩票缩水王 3.0高级版
    【软件大小】3423KB
    【下载地址】http://nj.onlinedown.net/soft/37437.htm
    【破解工具】PEID0.93、OD、ImportREC 1.6、LordPE
    【破解目的】学习脱壳。
    【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
    【软件介绍】1、彩尊圣手黄金版-全国彩票缩水王 软件开发既包含了美国强力球技术,又引用了目前国内较流行的算法,在选6型、选7型彩票

    基础上扩展开发,包括了原有双色球缩水软件大部分功能,同时引用了本土彩票过滤特征及功能。
    2、彩尊圣手黄金版-全国彩票缩水王 支持绝大多数的电脑彩票类型(包括乐透型、传统型、以及双色球、七星彩和金银彩、全国福彩3D),对于

    数字型缩水建立高效快速模型,应用七星彩选号,游刃有余,同时针对10月上市的福彩3D,彩尊圣手黄金版-全国彩票缩水王已全部覆盖3D彩票

    中奖范围
    3、“历史数据”具有网络自动更新功能,直接连接服务器阵列(4台双U主机),可实现鼠标单键更新,开奖信息实现第一时间播报,彩民更新

    数据只需几秒,并可同时为28000名用户提供数据下载服务。彩尊圣手黄金版-全国彩票缩水王 软件目前内置的开奖数据库增加至100多种,几

    乎覆盖所有彩种。各种彩票、大奖小奖一律通吃。支持彩包括:双色球、七星彩、金银彩、福彩3D、各种选5、选7、数字型彩票及全国所有开

    放体彩、福彩彩票。
    4、“走势分布”和“曲线轨迹”图表使得近期彩票走势一目了然,图表包含数十种分析参数,全方位剖析彩票走势,可以对下期彩票号码进行

    随意的预测和调整。特别增强了图形分析走势号码。
    5、“数值统计”包含每期总和、平均值、AC值、余数、奇偶比、大小比、重号、连号等的分析以及近期每个号码出现次数、重号和连号次数的

    统计,是您参考的绝佳选择。
    6、“过滤缩水”功能为 彩尊圣手黄金版-全国彩票缩水王 内部核心,软件引用了历史数据分析过滤模型,借鉴了国外领先号码优化技术“聪

    明组合”,缩水条件设置少,方便快捷,专家手把手教你如何设置条件!彩民在投注中配软件分析过滤过能,可帮助大大优化号码数量,杀掉

    垃圾注,保留住中奖号码,实现小额投注中奖的真正目的。软件考虑到彩民操作步骤清晰程度,可自动记忆每一步过滤操作,高效快速,号码

    过滤缩水支持传统型和数字型。软件缩水技术的精髓融入华彩网专家的分析策略和独特的运算公式(余数过滤 历史数据过滤 条件过滤 间距过

    滤 特殊过滤分组过滤)同时可实现目前最流行的双色球中5保6、中4保6玩法。
    7、可增加彩票种类,根据不同地区新发行彩票逐渐增加数据库。
    8、软件升级可根据彩种及时调整,并可增加插件,提供下载。

    【脱壳过程】 PEID 探测为 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
    设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。

    004C9B19 >  55                push ebp                        OD载入后停留在这里
    004C9B1A    8BEC              mov ebp,esp
    004C9B1C    6A FF             push -1
    004C9B1E    68 385A4E00       push czssgold.004E5A38
    004C9B23    68 00954C00       push czssgold.004C9500
    004C9B28    64:A1 00000000    mov eax,dword ptr fs:[0]


    一、欺骗代码
    下断:BP OpenMutexA,F9运行
    7C80EC1B >  8BFF              mov edi,edi
    7C80EC1D    55                push ebp
    7C80EC1E    8BEC              mov ebp,esp
    7C80EC20    51                push ecx
    7C80EC21    51                push ecx
    7C80EC22    837D 10 00        cmp dword ptr ss:[ebp+10],0
    7C80EC26    56                push esi

    堆栈友好提示:
    0012F59C   004B5F8D        /CALL 到 OpenMutexA 来自 czssgold.004B5F87
    0012F5A0   001F0001        |Access = 1F0001
    0012F5A4   00000000        |Inheritable = FALSE
    0012F5A8   0012FBDC        \MutexName = "40C::DA61B9CD17"   ★注意这个 12fbdc★

    CTRL+G来到 401000,写入如下代码:

    00401000    60                pushad
    00401001    9C                pushfd
    00401002    68 DCFB1200       push 12FBDC  上面看到的                         ; ASCII "40C::DA61B9CD17"
    00401007    33C0              xor eax,eax
    00401009    50                push eax
    0040100A    50                push eax
    0040100B    E8 2FDB407C       call kernel32.CreateMutexA
    00401010    9D                popfd
    00401011    61                popad
    00401012  - E9 04DC407C       jmp kernel32.OpenMutexA
    00401017    90                nop

    在401000 处新建eip。F9运行,再次中断在 OpenMutexA 处,取消该断点,然后返回401000处,撤消
    刚才键入的所有代码。

    二、避开IAT加密

    下断:He GetModuleHandleA,F9运行       注意堆栈变化:

    0012EC6C   5D175394        /CALL 到 GetModuleHandleA 来自 5D17538E
    0012EC70   5D1753E0        \pModule = "kernel32.dll"

    0012ED2C   77F45BB0        /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BAA
    0012ED30   77F44FF4        \pModule = "KERNEL32.DLL"

    0012F540   004B50E3        /CALL 到 GetModuleHandleA 来自 czssgold.004B50DD
    0012F544   00000000        \pModule = NULL

    0012BB20   00BFF65E        /CALL 到 GetModuleHandleA 来自 00BFF658
    0012BB24   00C10B58        \pModule = "kernel32.dll"
    0012BB28   00C11BB4        ASCII "VirtualAlloc"

    0012BB20   00BFF67B        /CALL 到 GetModuleHandleA 来自 00BFF675
    0012BB24   00C10B58        \pModule = "kernel32.dll"
    0012BB28   00C11BA8        ASCII "VirtualFree"

    0012BB1C   00BFF7E9        /CALL 到 OpenMutexA 来自 00BFF7E3
    0012BB20   001F0001        |Access = 1F0001
    0012BB24   00000000        |Inheritable = FALSE
    0012BB28   0012EB38        \MutexName = "DF4A9B95:SIMULATEEXPIRED"

    0012B898   00BE97CD        /CALL 到 GetModuleHandleA 来自 00BE97C7
    0012B89C   0012B9D4        \pModule = "kernel32.dll"       返回的好时期 alt+f9

    00BE97C7    FF15 D8B0C000     call dword ptr ds:[C0B0D8]            ; kernel32.GetModuleHandleA
    00BE97CD    8B0D A04CC100     mov ecx,dword ptr ds:[C14CA0]         ;★返回到这里!★
    00BE97D3    89040E            mov dword ptr ds:[esi+ecx],eax
    00BE97D6    A1 A04CC100       mov eax,dword ptr ds:[C14CA0]
    00BE97DB    393C06            cmp dword ptr ds:[esi+eax],edi
    00BE97DE    75 16             jnz short 00BE97F6
    00BE97E0    8D85 B4FEFFFF     lea eax,dword ptr ss:[ebp-14C]
    00BE97E6    50                push eax
    00BE97E7    FF15 E0B0C000     call dword ptr ds:[C0B0E0]            ; kernel32.LoadLibraryA
    00BE97ED    8B0D A04CC100     mov ecx,dword ptr ds:[C14CA0]
    00BE97F3    89040E            mov dword ptr ds:[esi+ecx],eax
    00BE97F6    A1 A04CC100       mov eax,dword ptr ds:[C14CA0]
    00BE97FB    393C06            cmp dword ptr ds:[esi+eax],edi
    00BE97FE    0F84 AD000000     je 00BE98B1                           ; Magic Jump
    00BE9804    33C9              xor ecx,ecx
    00BE9806    8B03              mov eax,dword ptr ds:[ebx]
    00BE9808    3938              cmp dword ptr ds:[eax],edi
    00BE980A    74 06             je short 00BE9812
    00BE980C    41                inc ecx
    00BE980D    83C0 0C           add eax,0C
    00BE9810  ^ EB F6             jmp short 00BE9808

    将 00BE97FE    0F84 AD000000     je 00BE98B1 改为:
       00BE97FE    0F84 AD000000     jmp 00BE98B1
    然后取消GetModuleHandleA断点

    三、内存断点大法直抵OEP

    Alt+M 查看内存,在401000段 下“内存访问断点”,F9运行:
    呵呵,一片红色~~  
    0043DC0D    6A 60             push 60                                ;在这里用LordPE修正映象--DUMP
    0043DC0F    68 40A04800       push czssgold.0048A040
    0043DC14    E8 BB0C0000       call czssgold.0043E8D4
    0043DC19    BF 94000000       mov edi,94
    0043DC1E    8BC7              mov eax,edi
    0043DC20    E8 DBF0FFFF       call czssgold.0043CD00
    0043DC25    8965 E8           mov dword ptr ss:[ebp-18],esp
    0043DC28    8BF4              mov esi,esp
    0043DC2A    893E              mov dword ptr ds:[esi],edi
    0043DC2C    56                push esi
    0043DC2D    FF15 04944700     call dword ptr ds:[479404]            ; kernel32.GetVersionExA
    0043DC33    8B4E 10           mov ecx,dword ptr ds:[esi+10]
    0043DC36    890D 60DD4900     mov dword ptr ds:[49DD60],ecx

    四、修复输入表
    在不关闭OD的前提下,ImportREC 1.6,选择这个进程 OEP:0003DC0D,点 IAT AutoSearch-Get Imports-Show Invalid 有少数无用函数,


    键--->Trace Level1(Disasm)修复大部分,其余的都CUT!Fix Dump,试运行,一切正常

    五、文件减肥
    用LordPE删除:text1、adata、data1、pdata 4个区段,然后再用LordPE重建PE,程序由1.98M变成724K

    【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-9-19 14:53:03 | 显示全部楼层
    佩服!楼主真历害啊。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-20 20:06
  • 签到天数: 258 天

    [LV.8]以坛为家I

    发表于 2005-9-19 19:24:57 | 显示全部楼层
    有空  一定要学习这种脱壳的方法!~~
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-9-20 13:35:51 | 显示全部楼层
    支持。。。。
    PYG19周年生日快乐!
    zhupf 该用户已被删除
    发表于 2005-9-21 12:22:47 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-10-2 17:29:57 | 显示全部楼层
    强!
    学习的说!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-12 20:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2005-10-2 20:10:29 | 显示全部楼层
    OK.正在找这样的文章。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-12 20:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2005-10-5 19:59:08 | 显示全部楼层
    0012BB20   00BFF67B        /CALL 到 GetModuleHandleA 来自 00BFF675
    0012BB24   00C10B58        \pModule = "kernel32.dll"
    0012BB28   00C11BA8        ASCII "VirtualFree"
    到这里后,如果再F9会出:"不知道如何在地址003E4C6E 处绕过命令,请尝试更改EIP或者跳过异常执行程序",如果用 SHIFT+F9的话,程序走不到OEP处就停止了.不知道该如何处理,请教,谢谢.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-5 21:46:26 | 显示全部楼层
    你的版本有问题吧,看看是ARM的哪个版本,单还是双,标准还是非标准
    斑竹脱的是非标准的,单线程的
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-12 20:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2005-10-5 23:14:50 | 显示全部楼层
    qxtianlong
    你好,我不是很董这些,能请教如何得知是单还是双,标准还是非标准.谢谢.非常感谢.
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表