Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 脱壳分析
【破文标题】Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 脱壳分析【破文作者】飘云
【破解平台】WinXp
【作者邮箱】[email protected]
【软件名称】彩尊圣手黄金版-全国彩票缩水王 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:
一、欺骗代码
下断: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:,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: ; kernel32.GetModuleHandleA
00BE97CD 8B0D A04CC100 mov ecx,dword ptr ds: ;★返回到这里!★
00BE97D3 89040E mov dword ptr ds:,eax
00BE97D6 A1 A04CC100 mov eax,dword ptr ds:
00BE97DB 393C06 cmp dword ptr ds:,edi
00BE97DE 75 16 jnz short 00BE97F6
00BE97E0 8D85 B4FEFFFF lea eax,dword ptr ss:
00BE97E6 50 push eax
00BE97E7 FF15 E0B0C000 call dword ptr ds: ; kernel32.LoadLibraryA
00BE97ED 8B0D A04CC100 mov ecx,dword ptr ds:
00BE97F3 89040E mov dword ptr ds:,eax
00BE97F6 A1 A04CC100 mov eax,dword ptr ds:
00BE97FB 393C06 cmp dword ptr ds:,edi
00BE97FE 0F84 AD000000 je 00BE98B1 ; Magic Jump
00BE9804 33C9 xor ecx,ecx
00BE9806 8B03 mov eax,dword ptr ds:
00BE9808 3938 cmp dword ptr ds:,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:,esp
0043DC28 8BF4 mov esi,esp
0043DC2A 893E mov dword ptr ds:,edi
0043DC2C 56 push esi
0043DC2D FF15 04944700 call dword ptr ds: ; kernel32.GetVersionExA
0043DC33 8B4E 10 mov ecx,dword ptr ds:
0043DC36 890D 60DD4900 mov dword ptr ds:,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
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 佩服!楼主真历害啊。 有空一定要学习这种脱壳的方法!~~ 支持。。。。 强!
学习的说!!! OK.正在找这样的文章。 0012BB20 00BFF67B /CALL 到 GetModuleHandleA 来自 00BFF675
0012BB24 00C10B58 \pModule = "kernel32.dll"
0012BB28 00C11BA8 ASCII "VirtualFree"
到这里后,如果再F9会出:"不知道如何在地址003E4C6E 处绕过命令,请尝试更改EIP或者跳过异常执行程序",如果用 SHIFT+F9的话,程序走不到OEP处就停止了.不知道该如何处理,请教,谢谢. 你的版本有问题吧,看看是ARM的哪个版本,单还是双,标准还是非标准
斑竹脱的是非标准的,单线程的 qxtianlong
你好,我不是很董这些,能请教如何得知是单还是双,标准还是非标准.谢谢.非常感谢.