gaogyc 发表于 2016-2-29 10:40:04

不固定长度的字符串的改变字符串字符位置函数谁会?

本帖最后由 gaogyc 于 2016-2-29 10:42 编辑

某软件的注册算法中有一部分算法是改变字符串字符位置的函数,并且这个函数是可逆的

代码部分:

0089DE93    6A 01         push 0x1
0089DE95    68 37000000   push 0x37      ‘参数1
0089DE9A    68 2C000000   push 0x2C       ’参数2
0089DE9F    8D45 A4         lea eax,dword ptr ss:   ’字符串
0089DEA2    50            push eax                                           ‘字符串进堆栈
0089DEA3    E8 04030000   call XXX.00XXXXXX                     ’改变字符串字符位置函数


下面是运算结果
左边是给入的字符串   右边是函数转换之后的字符串
1=1
12=12
123=123
1234=3241
12345=23415
123456=324165
1234567=1347265
12345678=81357642
123456789=378142695
1234567890=5368491027
谁能给分析下下个函数的实现原理,告诉我个大概的方法就行,
这个函数可以处理不同长度的字符串,根据参数1和参数2的值变成不同的排序,也就是说参数1参数2的值不同,排序结果也不同,而且排序是可逆的算法


还有大神们给看看,这个字符串是数组格式吗 ,那个20是长度,后面是字符串
大家帮忙分析下,谢谢了如果谁有思路,我所有的 飘云币: 54枚 全给您



zaas 发表于 2016-2-29 13:25:51

为啥不跟进那个call里仔细分析一下。。。

tree_fly 发表于 2016-2-29 13:33:17

同意楼上

GeekCat 发表于 2016-2-29 14:19:26

你给的例子:

1=1
12=12
123=123
1234=3241
12345=23415
123456=324165
1234567=1347265
12345678=81357642
123456789=378142695
1234567890=5368491027

没有通用性,只代表这几个字符串情况而已
你都明确那个CALL就是实现这个功能,直接F7进去分析,耐心的一步一步分析完

JZL 发表于 2016-2-29 14:51:55

确实的,你跟进去,反复跟几遍。这种东西只有自己经历过才是学会了。

gaogyc 发表于 2016-2-29 19:24:26

JZL 发表于 2016-2-29 14:51
确实的,你跟进去,反复跟几遍。这种东西只有自己经历过才是学会了。

恩,好吧我自己再多分析分析

gaogyc 发表于 2016-2-29 19:25:09

GeekCat 发表于 2016-2-29 14:19
你给的例子:

1=1


好的,我试试

menglv 发表于 2016-2-29 19:47:38

只是位置的变化,应该不会很复杂.

ZMLoveLH 发表于 2016-3-1 05:11:48

我是菜鸟,什么都不懂。帮顶楼主,期待达人的出手
页: [1]
查看完整版本: 不固定长度的字符串的改变字符串字符位置函数谁会?