X86逆向之:提取按钮特征码

特征码的用途非常的广泛,比如最常见的杀毒软件,就是使用了特征码定位技术来实现比对查杀的,提取特征码的目的就是为了快速定位到软件中的核心代码处,网上也有很多公开的特征码,我这里收集了一些比较有用的,如下所示:

--------------------------------------------------------------
常用按钮特征:
VB语言:81 6C 24
易语言:FF 55 FC 5F 5E或(e-debug)
万能断点:F3A58BC883E103F3A4E8
Delphi:740E8BD38B83????????FF93????????
MFC:sub eax,0a
VC++6.0:sub eax,0a

--------------------------------------------------------------
飘零云:
55 8B EC 81 EC 84 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 C7 45 F4 00 00 00 00 C7 45
F0 00 00 00 00 C7 45 EC 00 00 00 00 C7 45 E8 00 00 00 00
--------------------------------------------------------------
蓝屏防御特征码:
55 8B EC 81 EC 14 00 00 00 68 0C 00 00 00
--------------------------------------------------------------
蓝屏保护特征码:
55 8B EC BB 06 00 00 00
--------------------------------------------------------------
蓝屏特征码(断首retn)

飘零金盾1.5
55 8B EC BB 06 00 00 00

飘零金盾2.0
55 8B EC EB 10 56 4D 50 72 6F 74 65 63 74 20 62 65 67 69 6E 00 BB 06 00 00 00

飘零一般无VM通用
0F 84 ?? ?? ?? ?? E8 ?? ?? ?? ?? EB ??

飘零3.0
55 8B EC EB 10 56 4D 50 72 6F 74 65 63 74 20 62 65 67 69 6E 00 BB 06 00 00 00
--------------------------------------------------------------
飘零商业版3.5(爆破特征码,先搜到期时间,retn,再搜特征码 mov eax,1 retn)
无VM 
55 8B EC 81 EC 18 00 00 00 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 C7 45 F4 00 00 00 00
有VM 
B8 01 00 00 00 55 8B EC 83 EC 18 C7 45 FC 00 00 00 00 C7 45 F8 00 00 00 00 C7 45 F4 00 00 00 00
-------------------------------------------------------------
雷音(NOP)
75D2
-------------------------------------------------------------
飘零2.8(断首修改 mov eax,1 retn)

push ebp
mov ebp,esp
sub esp,0x38
mov dword ptr ss:[ebp-0x4],0x0
mov dword ptr ss:[ebp-0x8],0x0
mov dword ptr ss:[ebp-0xC],0x0
mov dword ptr ss:[ebp-0x10],0x0
------------------------------------------------------------
可可V8(断首修改 mov eax,0 retn)

ks_CheckKeyE: 55 8B EC 81 EC CC 00 00 00 C7 45 FC 00 00 00 00 68 0C 00 00 00
取签名数据: 55 8B EC 81 EC 10 00 00 00 68 08 00 00 00
可可V9(断首修改 mov eax,64 retn)
ks_CheckKeyE: 55 8B EC 81 EC 10 00 00 00 68 08 00 00 00
取签名数据: 75 FB FF E6 55 8B EC 88 00 00 00
退出验证: 55 8B EC 8B 45 08 50
---------------------------------------------------------
558BEC81ECCC000000C745FC00000000680C000000 第一段登入验证
558BEC81EC100000006808000000 第二段登入验证

再比如CF游戏中的数据的定位特征:

HOOK_游戏代码 8B 00 8B 08 8B 91 A8 00 00 00 地址-15 4E5E95
4E5EA

44E5E95
DIRECT 从733E00开始搜 6B 00 94 51 6C 地址+22 F3930CC
玩家数组 同版本的人物基址减去同版本的玩家数组,找到汇编代码的FPS地址使用FPS-36
数组大小 89 54 24 28 8B 54 24 70 89 54 24 34 88 44 24 10 下面的imul eax,eax,00000数组大小 4A8 本人ID 找到OBJECT,往下movzx eax,byte ptr [esi+就是本人ID] FOV 没开镜1070141403 第壹次开镜1055246586 第二次开镜1040583314必须使用AWM 一个静态的就是 模式基址 进入终结者搜2 爆破0 是否为生化 8B 54 24 10 8B 40 48 6A 01 6A 00 6A 00 52 FF D0地址+12 下面 cmp dword ptr {esi+偏移} dx_pos 00 00 00 00 00 00 00 00 00 ?? 00 00 00 ?? 00 00 CD CC CC 3D 本人偏移 55 83 C0 FF 83 F8 37 往上mov ecx,[eax+本人偏移] BFE7630 鼠标Y偏移 D8 C9 D9 C0 D9 E0 下面fld dword ptr [esi+偏移] 鼠标Y偏移_j 50 57 53 D8 86 下面fld dword ptr {esi+偏移} 枪击Y偏移 81 EC CC 00 00 00 56 8B F1 下面test byte ptr [esi+00000偏移],20 枪击Y偏移_j 8B 84 24 80 00 00 00 8D 94 5B FE 0D 00 00 D9 44 95 00 8B 16 上面fld dword ptr [esi+00000偏移] OBJECT D9 44 24 2C D9 44 24 14 D9 C0 DE CA D9 C9 上面 mov esi,{eax+edi+基址} w_hook 汇编=lea ecx,[ebp-000001C8] 整数数值=4265119117 或8D 8D 38 FE FF FF E8 80 FE 06 00 0F B6 D0 85 D2 IsVisible_ecx 从006开始搜 55 8B EC 8B 45 0C 50 8B 4D 08 51 fld dword ptr [esi+00000偏移] IsVisible_call 从005A开始搜 55 8B EC 51 89 4D FC 8B 45 FC 83 C0 10 50 8B 4D 0C 51 8B 55 08 52 无后基址 [1] lea eax,[ebp+00000370]地址+2 或 8B 55 00 8B 82 CC 02 00 00 8B CD 地址-52 无后基址 [2] lea eax,[edi+0000036C]地址+2 或 8D 87 6C 03 00 00 6A 04 D9 18 地址+2 弹道X_Y基址 [1] fld dword ptr [ebx+00000364]地址+2 D8 44 24 28 8B 11 8B 52 20 83 EC 0C D9 5C 24 38 地址+6 弹道X_Y基址 [2] 8B 52 20 83 EC 0C D9 5C 24 38 8D 44 24 4C D9 83 地址-16 就在这俩附近 武器判断基址 主武器搜0 副武器搜1 近身搜2 雷搜3 模式判断基址 人机运输搜180 人机新沙漠-1搜181 人机马厩搜182 人物是否为观战 观战搜1,否则0 是否枪王基址 进入枪王爆破模式搜2 普通爆破搜0 静态就是 传说的不代码子弹穿墙 搜 8B D0 83 C4 04 85 D2 89 54 24 28 找到 cmp dword ptr [edx+00000570],00 写结尾改01 遁地,站着搜:43 00 00 60 42 64 00 00 00 00 00 00 00 00 00 00 普通子弹穿墙:搜索8字 8389772107935907840 无视闪光和烟雾 都是中了搜1 没中搜0 不掉血基址 搜新手地图名 tutorial_D 无后坐力 拿M16进游戏搜搜索1025758992 写-1 射出等于无后+8

但是单单这些还是远远不够的,因为编译器在不断的更新,接下来我将以易语言为重点,提取其按钮的特征码,这样你就可以将此方法应用到其他任何一种编译型语言中去。

在学习前,你需要准备好,练习程序和调试器

OD软件: https://www.cr173.com/soft/32097.html
练习程序:https://files-cdn.cnblogs.com/files/LyShark/练习提取特征码.zip

开始正题

 1.打开练习小程序,将会看到下面的窗体,点击按钮1将会弹出一个窗口,提示第一个按钮被电击,我们将这段提示记下来,最终实现的效果是,提取通用特征码,然后定位到其他的按钮事件中去。

2.打开OD将上面的软件拖入后,会看到下面的汇编代码,默认情况下会停留在程序OEP的位置,易语言使用了VC6.0的链接器,所以看汇编代码的话,会感觉就是VC6的杰作。

猜你喜欢

转载自www.cnblogs.com/LyShark/p/11137442.html