首页
社区
课程
招聘
[讨论]碰到了比较棘手的算法,请教应该如何解决,望高人指点
发表于: 2012-5-6 12:19 4982

[讨论]碰到了比较棘手的算法,请教应该如何解决,望高人指点

2012-5-6 12:19
4982
小弟最近在分析一个算法,想知道这个算法之前的原文(参数)是什么。
但目前由于汇编代码太多(240w行左右),始终无法找到原文。

算法会根据异或等操作决定跳到哪一个代码块,到这里可能会进行一些异或等操作计算字串,又或者根据对照字符对照出一段字串,又或者将字串复制到另一个地址。

反复执行以上操作。

而函数的参数是一个全局变量,这个全局变量什么时候变的我也不清楚。

现在我想找到原文,使用 call 的方式模拟出这套算法的加密,请问我应该怎么找到原文呢?
分析它感觉就是无底洞,走不到头。

若哪位大大有空,帮我分析并给予一定指点,我愿意支付k以上报酬。
万分感谢。 QQ: 936903837

类似这样的结构有很多个:
10A6C72B   .  8985 78FCFFFF mov     dword ptr ss:[ebp-388], eax
10A6C731   .  8B8D 78FCFFFF mov     ecx, dword ptr ss:[ebp-388]
10A6C737   .  81C1 167B0445 add     ecx, 45047B16
10A6C73D   .  898D 78FCFFFF mov     dword ptr ss:[ebp-388], ecx
10A6C743   .  83BD 78FCFFFF>cmp     dword ptr ss:[ebp-388], 45
10A6C74A   .  0F87 6B010000 ja      10A6C8BB
10A6C750   .  8B95 78FCFFFF mov     edx, dword ptr ss:[ebp-388]
10A6C756   .  FF2495 04FBA6>jmp     dword ptr ds:[edx*4+10A6FB04]
10A6C75D   >  E9 5E010000   jmp     10A6C8C0
10A6C762   >  E9 83010000   jmp     10A6C8EA
10A6C767   >  E9 DC030000   jmp     10A6CB48
10A6C76C   >  E9 01040000   jmp     10A6CB72
10A6C771   >  E9 0B060000   jmp     10A6CD81
10A6C776   >  E9 30060000   jmp     10A6CDAB
10A6C77B   >  E9 56060000   jmp     10A6CDD6
10A6C780   >  E9 74060000   jmp     10A6CDF9
10A6C785   >  E9 0B080000   jmp     10A6CF95
10A6C78A   >  E9 29080000   jmp     10A6CFB8
10A6C78F   >  E9 4F080000   jmp     10A6CFE3
10A6C794   >  E9 E9090000   jmp     10A6D182
10A6C799   >  E9 1E0A0000   jmp     10A6D1BC
10A6C79E   >  E9 FD0B0000   jmp     10A6D3A0
10A6C7A3   >  E9 290C0000   jmp     10A6D3D1
10A6C7A8   >  E9 450D0000   jmp     10A6D4F2
10A6C7AD   >  E9 6B0D0000   jmp     10A6D51D
10A6C7B2   >  E9 FA0E0000   jmp     10A6D6B1
10A6C7B7   >  E9 9B100000   jmp     10A6D857
10A6C7BC   >  E9 AC100000   jmp     10A6D86D
10A6C7C1   >  E9 1C130000   jmp     10A6DAE2
10A6C7C6   >  E9 1C130000   jmp     10A6DAE7
10A6C7CB   .  E9 2D130000   jmp     10A6DAFD
10A6C7D0   >  E9 3F130000   jmp     10A6DB14
10A6C7D5   >  E9 60150000   jmp     10A6DD3A
10A6C7DA   >  E9 85150000   jmp     10A6DD64
10A6C7DF   >  E9 97150000   jmp     10A6DD7B
10A6C7E4   >  E9 A8150000   jmp     10A6DD91
10A6C7E9   >  E9 02160000   jmp     10A6DDF0
10A6C7EE   >  E9 23160000   jmp     10A6DE16
10A6C7F3   >  E9 46160000   jmp     10A6DE3E
10A6C7F8   >  E9 58160000   jmp     10A6DE55
10A6C7FD   >  E9 7D160000   jmp     10A6DE7F
10A6C802   >  E9 A3160000   jmp     10A6DEAA
10A6C807   >  E9 57180000   jmp     10A6E063
10A6C80C   >  E9 B21A0000   jmp     10A6E2C3
10A6C811   >  E9 C31A0000   jmp     10A6E2D9
10A6C816   >  E9 D41C0000   jmp     10A6E4EF
10A6C81B   >  E9 CD1E0000   jmp     10A6E6ED
10A6C820   >  E9 EF1E0000   jmp     10A6E714
10A6C825   >  E9 0C1F0000   jmp     10A6E736
10A6C82A   >  E9 1B1F0000   jmp     10A6E74A
10A6C82F   >  E9 411F0000   jmp     10A6E775
10A6C834   >  E9 6B1F0000   jmp     10A6E7A4
10A6C839   >  E9 8E1F0000   jmp     10A6E7CC
10A6C83E   >  E9 B41F0000   jmp     10A6E7F7
10A6C843   >  E9 BB200000   jmp     10A6E903
10A6C848   >  E9 DC200000   jmp     10A6E929
10A6C84D   >  E9 97220000   jmp     10A6EAE9
10A6C852   >  E9 BC230000   jmp     10A6EC13
10A6C857   >  E9 E1240000   jmp     10A6ED3D
10A6C85C   >  E9 DD250000   jmp     10A6EE3E
10A6C861   >  E9 02260000   jmp     10A6EE68
10A6C866   >  E9 86260000   jmp     10A6EEF1
10A6C86B   >  E9 AC260000   jmp     10A6EF1C
10A6C870   >  E9 D2260000   jmp     10A6EF47
10A6C875   >  E9 D3280000   jmp     10A6F14D
10A6C87A   >  E9 FF280000   jmp     10A6F17E
10A6C87F   >  E9 25290000   jmp     10A6F1A9
10A6C884   >  E9 FB2A0000   jmp     10A6F384
10A6C889   >  E9 1C2B0000   jmp     10A6F3AA
10A6C88E   >  E9 412B0000   jmp     10A6F3D4
10A6C893   >  E9 062E0000   jmp     10A6F69E
10A6C898   >  E9 272E0000   jmp     10A6F6C4
10A6C89D   >  E9 992F0000   jmp     10A6F83B
10A6C8A2   >  E9 BE2F0000   jmp     10A6F865
10A6C8A7   >  E9 DC2F0000   jmp     10A6F888
10A6C8AC   >  E9 EE2F0000   jmp     10A6F89F
10A6C8B1   >  E9 0F300000   jmp     10A6F8C5
10A6C8B6   >  E9 45300000   jmp     10A6F900
10A6C8BB   >  E9 3D120000   jmp     10A6DAFD

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 279
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
使用 call 的方式模拟出这套算法的加密\
很好奇你是怎么做的。:
2012-5-9 22:05
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
显然是个VM, 入口参数 eax(ss:[ebp-388]) 是指令, 对应 0x45 条.
10A6C743   .  83BD 78FCFFFF>cmp     dword ptr ss:[ebp-388], 45
10A6C74A   .  0F87 6B010000 ja      10A6C8BB
10A6C750   .  8B95 78FCFFFF mov     edx, dword ptr ss:[ebp-388]
10A6C756   .  FF2495 04FBA6>jmp     dword ptr ds:[edx*4+10A6FB04]

这明显是 switch (ss:[ebp-388]) 后 0x10A6FB04 起对应 0x45 个 case
2012-5-10 19:42
0
游客
登录 | 注册 方可回帖
返回
//