本帖最后由 longlonglong 于 2022-9-1 19:47 编辑
工具:52下的OD;
研究对象:一种mt4收费加密指标;
来源:网络
理由:和谐过程中的一点心得;
软件类型:MetaTrader;
操作系统:winxp
要达到目的:功能正常使用
百度了一下,据说ex4比较难和谐,特意从网上找了一个ex4,下面是过期后指标表现的状态。
好像无法下手,唯一有效的信息就是“账号无权限续费微信”,内存映射里找一下,在地址057D27D4找到,先下内存访问断点,看OD是否断得下来
[Asm] 纯文本查看 复制代码 007EBCB7 8D4F 4C lea ecx,dword ptr ds:[edi+0x4C]
007EBCBA 8945 14 mov dword ptr ss:[ebp+0x14],eax
007EBCBD 8D51 01 lea edx,dword ptr ds:[ecx+0x1]
007EBCC0 8A01 mov al,byte ptr ds:[ecx]
007EBCC2 41 inc ecx
007EBCC3 84C0 test al,al
007EBCC5 ^ 75 F9 jnz short terminal.007EBCC0
007EBCC7 8D86 64010000 lea eax,dword ptr ds:[esi+0x164]
007EBCCD 2BCA sub ecx,edx
007EBCCF 50 push eax
007EBCD0 8D45 C0 lea eax,dword ptr ss:[ebp-0x40]
007EBCD3 894D 0C mov dword ptr ss:[ebp+0xC],ecx
007EBCD6 50 push eax
007EBCD7 FF15 0CCC9900 call dword ptr ds:[0x99CC0C] ; user32.CopyRect
007EBCDD 83BF 78020000 0>cmp dword ptr ds:[edi+0x278],0x0
007EBCE4 74 09 je short terminal.007EBCEF
007EBCC0断下来,取消内存访问断点,上面程序计算字符个数。看一下堆栈调用
没有显性的调用关系。Ctrl+f9,f8,再看堆栈调用
到程序段段首下断
[Asm] 纯文本查看 复制代码 007BE340 55 push ebp
007BE341 8BEC mov ebp,esp
007BE343 83E4 C0 and esp,0xFFFFFFC0
007BE346 83EC 34 sub esp,0x34
007BE349 837D 08 00 cmp dword ptr ss:[ebp+0x8],0x0
007BE34D 53 push ebx
007BE34E 56 push esi
007BE34F 57 push edi
007BE350 8BF9 mov edi,ecx
007BE352 C74424 3C 00000000 mov dword ptr ss:[esp+0x3C],0x0
007BE35A 0F84 E3000000 je terminal.007BE443
007BE360 8B5D 0C mov ebx,dword ptr ss:[ebp+0xC]
007BE363 85DB test ebx,ebx
007BE365 0F84 D8000000 je terminal.007BE443
007BE36B 837B 04 00 cmp dword ptr ds:[ebx+0x4],0x0
007BE36F 0F84 CE000000 je terminal.007BE443
007BE375 837B 08 01 cmp dword ptr ds:[ebx+0x8],0x1
007BE379 0F8C C4000000 jl terminal.007BE443
007BE37F 8B07 mov eax,dword ptr ds:[edi] ; terminal.00A1E52C
007BE381 FF50 10 call dword ptr ds:[eax+0x10]
007BE384 83F8 01 cmp eax,0x1
007BE387 74 0A je short terminal.007BE393
007BE389 8B87 80060000 mov eax,dword ptr ds:[edi+0x680]
007BE38F 894424 3C mov dword ptr ss:[esp+0x3C],eax
007BE393 8BB7 F41E0000 mov esi,dword ptr ds:[edi+0x1EF4]
007BE399 897424 38 mov dword ptr ss:[esp+0x38],esi
007BE39D 33F6 xor esi,esi
007BE39F 397424 38 cmp dword ptr ss:[esp+0x38],esi
007BE3A3 0F8E 84000000 jle terminal.007BE42D
007BE3A9 8B5C24 38 mov ebx,dword ptr ss:[esp+0x38]
007BE3AD 0F1F ??? ; 未知命令
007BE3AF 0085 F678713B add byte ptr ss:[ebp+0x3B7178F6],al
007BE3B5 B7 F4 mov bh,0xF4
007BE3B7 1E push ds
007BE3B8 0000 add byte ptr ds:[eax],al
007BE3BA 7D 69 jge short terminal.007BE425
007BE3BC 8B9F EC1E0000 mov ebx,dword ptr ds:[edi+0x1EEC]
007BE3C2 85DB test ebx,ebx
007BE3C4 74 5B je short terminal.007BE421
007BE3C6 8B1CB3 mov ebx,dword ptr ds:[ebx+esi*4]
007BE3C9 85DB test ebx,ebx
007BE3CB 74 54 je short terminal.007BE421
007BE3CD 8B55 10 mov edx,dword ptr ss:[ebp+0x10]
007BE3D0 8BCB mov ecx,ebx
007BE3D2 52 push edx
007BE3D3 E8 F8EAC6FF call terminal.0042CED0
007BE3D8 3BD0 cmp edx,eax
007BE3DA 75 45 jnz short terminal.007BE421
007BE3DC FFB7 DC1E0000 push dword ptr ds:[edi+0x1EDC]
007BE3E2 8B03 mov eax,dword ptr ds:[ebx] ; terminal.00A23ED8
007BE3E4 FFB7 D81E0000 push dword ptr ds:[edi+0x1ED8]
007BE3EA FF50 5C call dword ptr ds:[eax+0x5C]
007BE3ED FF7424 3C push dword ptr ss:[esp+0x3C]
007BE3F1 8B45 10 mov eax,dword ptr ss:[ebp+0x10]
007BE3F4 8BCB mov ecx,ebx
007BE3F6 83EC 10 sub esp,0x10
007BE3F9 8983 E8000000 mov dword ptr ds:[ebx+0xE8],eax
007BE3FF 0F1087 A01E0000 movups xmm0,dqword ptr ds:[edi+0x1EA0]
007BE406 8B03 mov eax,dword ptr ds:[ebx] ; terminal.00A23ED8
007BE408 0F110424 movups dqword ptr ss:[esp],xmm0
007BE40C FFB7 901E0000 push dword ptr ds:[edi+0x1E90]
007BE412 FFB7 881E0000 push dword ptr ds:[edi+0x1E88]
007BE418 FF75 0C push dword ptr ss:[ebp+0xC]
007BE41B FF75 08 push dword ptr ss:[ebp+0x8]
007BE41E FF50 40 call dword ptr ds:[eax+0x40]
007BE421 8B5C24 38 mov ebx,dword ptr ss:[esp+0x38]
007BE425 46 inc esi
007BE426 3BF3 cmp esi,ebx
007BE428 ^ 7C 86 jl short terminal.007BE3B0
007BE42A 8B5D 0C mov ebx,dword ptr ss:[ebp+0xC]
007BE42D 8B45 14 mov eax,dword ptr ss:[ebp+0x14]
007BE430 85C0 test eax,eax
007BE432 74 0F je short terminal.007BE443
007BE434 50 push eax
007BE435 FF75 10 push dword ptr ss:[ebp+0x10]
007BE438 8BCF mov ecx,edi
007BE43A 53 push ebx
007BE43B FF75 08 push dword ptr ss:[ebp+0x8]
007BE43E E8 7DE1FFFF call terminal.007BC5C0
007BE443 5F pop edi ; 0567D770
007BE444 5E pop esi ; 0567D770
007BE445 5B pop ebx ; 0567D770
007BE446 8BE5 mov esp,ebp
007BE448 5D pop ebp ; 0567D770
007BE449 C2 1000 retn 0x10
断下后f8走下来,来动态分析这段程序,走到
007BE3DA /75 45 jnz short terminal.007BE421
改为
007BE3DA /EB 45 jmp short terminal.007BE421
F9
这种方法应该可以通杀上面那种加密方法及类似加密。 |