首页
社区
课程
招聘
[求助]看看这是什么加密算法,加密的数据可逆吗?(已解决)
2009-9-8 23:13 5628

[求助]看看这是什么加密算法,加密的数据可逆吗?(已解决)

2009-9-8 23:13
5628
这段代码每次对8个字节加密,加密后生成8字节的密文,加密过程是反复从一个好象密钥表的数据中取数,然后或加或xor操作。各位看看是对称加密吗?解密算法是什么?谢谢

027411E0        mov        eax,dwordptr[ecx]       //密钥表中第一个数据
027411E2        push        ebx
027411E3        push        ebp
027411E4        push        esi
027411E5        mov        esi,dwordptr[esp+10]
027411E9        push        edi
027411EA        mov        edx,dwordptr[esi]       //要被加密的4字节数据
027411EC        xor        edx,eax                       //和密钥表中第一个数据xor
027411EE        xor        eax,eax
027411F0                mov        dwordptr[esp+14],edx
027411F4                mov        edi,edx
027411F6                mov        al,byteptr[esp+16]        //取edx中间2位
027411FA                shr        edi,18                            //取edx高2位
027411FD        mov        eax,dwordptr[ecx+eax*4+448]  //从密钥表中取数
02741204        mov        ebx,dwordptr[ecx+edi*4+48]
02741208        add        eax,ebx                                       //取出的数字运算
0274120A        xor        ebx,ebx
0274120C        mov        bl,dh                                           //再取edx中dh
0274120E        mov        edi,dwordptr[ecx+ebx*4+848]   //取密钥
02741215        xor        eax,edi                                        //运算
02741217        mov        edi,edx                                        //再取edx中dl
02741219        and        edi,0FF                                         
0274121F        mov        ebx,dwordptr[ecx+edi*4+C48]                   //取密钥
02741226        mov        edi,dwordptr[ecx+4]
02741229        add        eax,ebx                                       //运算
0274122B        xor        ebx,ebx
0274122D        xor        eax,edi                                       //以下反复这样加密
0274122F        mov        edi,dwordptr[esp+18]
02741233        xor        eax,dwordptr[edi]
02741235        mov        dwordptr[esp+14],eax
02741239        mov        ebp,eax
0274123B        mov        bl,byteptr[esp+16]
0274123F        shr        ebp,18
02741242        mov        ebx,dwordptr[ecx+ebx*4+448]
02741249        add        ebx,dwordptr[ecx+ebp*4+48]
0274124D        mov        ebp,ebx
0274124F        xor        ebx,ebx
02741251        mov        bl,ah
02741253        xor        ebp,dwordptr[ecx+ebx*4+848]
0274125A        mov        ebx,eax
0274125C        and        ebx,0FF
02741262        add        ebp,dwordptr[ecx+ebx*4+C48]
02741269        mov        ebx,dwordptr[ecx+8]
0274126C        xor        ebp,ebx
0274126E        xor        ebx,ebx
02741270        xor        edx,ebp
02741272        mov        dwordptr[esp+14],edx
02741276        mov        bl,byteptr[esp+16]
0274127A        shr        edx,18
0274127D        mov        ebp,dwordptr[ecx+ebx*4+448]
02741284        mov        ebx,dwordptr[ecx+edx*4+48]
02741288        mov        edx,dwordptr[esp+14]
0274128C        add        ebp,ebx
0274128E        xor        ebx,ebx
02741290        mov        bl,dh
02741292        xor        ebp,dwordptr[ecx+ebx*4+848]
02741299        mov        ebx,edx
0274129B        and        ebx,0FF
027412A1        add        ebp,dwordptr[ecx+ebx*4+C48]
027412A8        mov        ebx,dwordptr[ecx+C]
027412AB        xor        ebp,ebx
027412AD        xor        ebx,ebx
027412AF        xor        eax,ebp
027412B1        mov        dwordptr[esp+14],eax
027412B5        mov        ebp,eax
027412B7        mov        bl,byteptr[esp+16]
027412BB        shr        ebp,18
027412BE        mov        ebx,dwordptr[ecx+ebx*4+448]
027412C5        add        ebx,dwordptr[ecx+ebp*4+48]
027412C9        mov        ebp,ebx
027412CB        xor        ebx,ebx
027412CD        mov        bl,ah
027412CF        xor        ebp,dwordptr[ecx+ebx*4+848]
027412D6        mov        ebx,eax
027412D8        and        ebx,0FF
027412DE        add        ebp,dwordptr[ecx+ebx*4+C48]
027412E5        mov        ebx,dwordptr[ecx+10]
027412E8        xor        ebp,ebx
027412EA        xor        edx,ebp
027412EC        xor        ebx,ebx
027412EE        mov        dwordptr[esp+14],edx
027412F2        mov        bl,byteptr[esp+16]
027412F6        shr        edx,18
027412F9        mov        ebp,dwordptr[ecx+ebx*4+448]
02741300        mov        ebx,dwordptr[ecx+edx*4+48]
02741304        mov        edx,dwordptr[esp+14]
02741308        add        ebp,ebx
0274130A        xor        ebx,ebx
0274130C        mov        bl,dh
0274130E        xor        ebp,dwordptr[ecx+ebx*4+848]
02741315        mov        ebx,edx
02741317        and        ebx,0FF
0274131D        add        ebp,dwordptr[ecx+ebx*4+C48]
02741324        mov        ebx,dwordptr[ecx+14]
02741327        xor        ebp,ebx
02741329        xor        ebx,ebx
0274132B        xor        eax,ebp
0274132D        mov        dwordptr[esp+14],eax
02741331        mov        ebp,eax
02741333        mov        bl,byteptr[esp+16]
02741337        shr        ebp,18
0274133A        mov        ebx,dwordptr[ecx+ebx*4+448]
02741341        add        ebx,dwordptr[ecx+ebp*4+48]
02741345        mov        ebp,ebx
02741347        xor        ebx,ebx
02741349        mov        bl,ah
0274134B        xor        ebp,dwordptr[ecx+ebx*4+848]
02741352        mov        ebx,eax
02741354        and        ebx,0FF
0274135A        add        ebp,dwordptr[ecx+ebx*4+C48]
02741361        mov        ebx,dwordptr[ecx+18]
02741364        xor        ebp,ebx
02741366        xor        ebx,ebx
02741368        xor        edx,ebp
0274136A        mov        dwordptr[esp+14],edx
0274136E        mov        bl,byteptr[esp+16]
02741372        shr        edx,18
02741375        mov        ebp,dwordptr[ecx+ebx*4+448]
0274137C        mov        ebx,dwordptr[ecx+edx*4+48]
02741380        mov        edx,dwordptr[esp+14]
02741384        add        ebp,ebx
02741386        xor        ebx,ebx
02741388        mov        bl,dh
0274138A        xor        ebp,dwordptr[ecx+ebx*4+848]
02741391        mov        ebx,edx
02741393        and        ebx,0FF
02741399        add        ebp,dwordptr[ecx+ebx*4+C48]
027413A0        mov        ebx,dwordptr[ecx+1C]
027413A3        xor        ebp,ebx
027413A5        xor        ebx,ebx
027413A7        xor        eax,ebp
027413A9        mov        dwordptr[esp+14],eax
027413AD        mov        ebp,eax
027413AF        mov        bl,byteptr[esp+16]
027413B3        shr        ebp,18
027413B6        mov        ebx,dwordptr[ecx+ebx*4+448]
027413BD        add        ebx,dwordptr[ecx+ebp*4+48]
027413C1        mov        ebp,ebx
027413C3        xor        ebx,ebx
027413C5        mov        bl,ah
027413C7        xor        ebp,dwordptr[ecx+ebx*4+848]
027413CE        mov        ebx,eax
027413D0        and        ebx,0FF
027413D6        add        ebp,dwordptr[ecx+ebx*4+C48]
027413DD        mov        ebx,dwordptr[ecx+20]
027413E0        xor        ebp,ebx
027413E2        xor        ebx,ebx
027413E4        xor        edx,ebp
027413E6        mov        dwordptr[esp+14],edx
027413EA        mov        bl,byteptr[esp+16]
027413EE        shr        edx,18
027413F1        mov        ebp,dwordptr[ecx+ebx*4+448]
027413F8        mov        ebx,dwordptr[ecx+edx*4+48]
027413FC        mov        edx,dwordptr[esp+14]
02741400        add        ebp,ebx
02741402        xor        ebx,ebx
02741404        mov        bl,dh
02741406        xor        ebp,dwordptr[ecx+ebx*4+848]
0274140D        mov        ebx,edx
0274140F        and        ebx,0FF
02741415        add        ebp,dwordptr[ecx+ebx*4+C48]
0274141C        mov        ebx,dwordptr[ecx+24]
0274141F        xor        ebp,ebx
02741421        xor        ebx,ebx
02741423        xor        eax,ebp
02741425        mov        dwordptr[esp+14],eax
02741429        mov        ebp,eax
0274142B        mov        bl,byteptr[esp+16]
0274142F        shr        ebp,18
02741432        mov        ebx,dwordptr[ecx+ebx*4+448]
02741439        add        ebx,dwordptr[ecx+ebp*4+48]
0274143D        mov        ebp,ebx
0274143F        xor        ebx,ebx
02741441        mov        bl,ah
02741443        xor        ebp,dwordptr[ecx+ebx*4+848]
0274144A        mov        ebx,eax
0274144C        and        ebx,0FF
02741452        add        ebp,dwordptr[ecx+ebx*4+C48]
02741459        mov        ebx,dwordptr[ecx+28]
0274145C        xor        ebp,ebx
0274145E        xor        ebx,ebx
02741460        xor        edx,ebp
02741462        mov        dwordptr[esp+14],edx
02741466        mov        bl,byteptr[esp+16]
0274146A        shr        edx,18
0274146D        mov        ebp,dwordptr[ecx+ebx*4+448]
02741474        mov        ebx,dwordptr[ecx+edx*4+48]
02741478        mov        edx,dwordptr[esp+14]
0274147C        add        ebp,ebx
0274147E        xor        ebx,ebx
02741480        mov        bl,dh
02741482        xor        ebp,dwordptr[ecx+ebx*4+848]
02741489        mov        ebx,edx
0274148B        and        ebx,0FF
02741491        add        ebp,dwordptr[ecx+ebx*4+C48]
02741498        mov        ebx,dwordptr[ecx+2C]
0274149B        xor        ebp,ebx
0274149D        xor        ebx,ebx
0274149F        xor        eax,ebp
027414A1        mov        dwordptr[esp+14],eax
027414A5        mov        ebp,eax
027414A7        mov        bl,byteptr[esp+16]
027414AB        shr        ebp,18
027414AE        mov        ebx,dwordptr[ecx+ebx*4+448]
027414B5        add        ebx,dwordptr[ecx+ebp*4+48]
027414B9        mov        ebp,ebx
027414BB        xor        ebx,ebx
027414BD        mov        bl,ah
027414BF        xor        ebp,dwordptr[ecx+ebx*4+848]
027414C6        mov        ebx,eax
027414C8        and        ebx,0FF
027414CE        add        ebp,dwordptr[ecx+ebx*4+C48]
027414D5        mov        ebx,dwordptr[ecx+30]
027414D8        xor        ebp,ebx
027414DA        xor        ebx,ebx
027414DC        xor        edx,ebp
027414DE        mov        dwordptr[esp+14],edx
027414E2        mov        bl,byteptr[esp+16]
027414E6        shr        edx,18
027414E9        mov        ebp,dwordptr[ecx+ebx*4+448]
027414F0        mov        ebx,dwordptr[ecx+edx*4+48]
027414F4        mov        edx,dwordptr[esp+14]
027414F8        add        ebp,ebx
027414FA        xor        ebx,ebx
027414FC        mov        bl,dh
027414FE        xor        ebp,dwordptr[ecx+ebx*4+848]
02741505        mov        ebx,edx
02741507        and        ebx,0FF
0274150D        add        ebp,dwordptr[ecx+ebx*4+C48]
02741514        mov        ebx,dwordptr[ecx+34]
02741517        xor        ebp,ebx
02741519        xor        eax,ebp
0274151B        xor        ebx,ebx
0274151D        mov        dwordptr[esp+14],eax
02741521        mov        ebp,eax
02741523        mov        bl,byteptr[esp+16]
02741527        mov        ebx,dwordptr[ecx+ebx*4+448]
0274152E        shr        ebp,18
02741531        add        ebx,dwordptr[ecx+ebp*4+48]
02741535        mov        ebp,ebx
02741537        xor        ebx,ebx
02741539        mov        bl,ah
0274153B        xor        ebp,dwordptr[ecx+ebx*4+848]
02741542        mov        ebx,eax
02741544        and        ebx,0FF
0274154A        add        ebp,dwordptr[ecx+ebx*4+C48]
02741551        mov        ebx,dwordptr[ecx+38]
02741554        xor        ebp,ebx
02741556        xor        ebx,ebx
02741558        xor        edx,ebp
0274155A        mov        dwordptr[esp+14],edx
0274155E        mov        bl,byteptr[esp+16]
02741562        shr        edx,18
02741565        mov        ebp,dwordptr[ecx+ebx*4+448]
0274156C        mov        ebx,dwordptr[ecx+edx*4+48]
02741570        mov        edx,dwordptr[esp+14]
02741574        add        ebp,ebx
02741576        xor        ebx,ebx
02741578        mov        bl,dh
0274157A        xor        ebp,dwordptr[ecx+ebx*4+848]
02741581        mov        ebx,edx
02741583        and        ebx,0FF
02741589        add        ebp,dwordptr[ecx+ebx*4+C48]
02741590        mov        ebx,dwordptr[ecx+3C]
02741593        xor        ebp,ebx
02741595        xor        ebx,ebx
02741597        xor        eax,ebp
02741599        mov        dwordptr[esp+14],eax
0274159D        mov        ebp,eax
0274159F        mov        bl,byteptr[esp+16]
027415A3        shr        ebp,18
027415A6        mov        ebx,dwordptr[ecx+ebx*4+448]
027415AD        add        ebx,dwordptr[ecx+ebp*4+48]
027415B1        mov        ebp,ebx
027415B3        xor        ebx,ebx
027415B5        mov        bl,ah
027415B7        xor        ebp,dwordptr[ecx+ebx*4+848]
027415BE        mov        ebx,eax
027415C0        and        ebx,0FF
027415C6        add        ebp,dwordptr[ecx+ebx*4+C48]
027415CD        mov        ebx,dwordptr[ecx+40]
027415D0        xor        ebp,ebx
027415D2        mov        ebx,dwordptr[ecx+44]
027415D5        xor        edx,ebp
027415D7        xor        eax,ebx
027415D9        mov        dwordptr[edi],edx                   //得到加密的8字节密文
027415DB        mov        dwordptr[esi],eax                   //得到加密的8字节密文
027415DD        pop        edi
027415DE        pop        esi
027415DF        pop        ebp
027415E0        pop        ebx
027415E1        retn        8

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

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liudanking 2009-9-9 15:44
2
0
具体没看出来是什么加密。
我说说我想到的:
8字节*8=64位。很熟悉的加密块吧?
input 8字节 --> output 8字节。对称加密的可能大一点。但不一定……
另外最好给出密文和明文,直接看汇编资料不够呀
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ds2002 2009-9-9 22:28
3
0
谢谢楼上的帮忙,我觉得这个加密应该可逆的,有可能找到解密的算法吗?感觉有点象背包加密呢,各位老大再帮忙看看哦。

加密过程用了很多类似mov  eax,dwordptr[ecx+eax*4+448] 的语句,看来有4张各为1024字节的密码表。把每个dword分成4个byte,每个byte分别从四张表中取数字参与运算。这是什么算法呢?

加密前的明文:
00124522  31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66  1234567890abcdef
00124532  67 68 69 00 7A 79 78 77 76 75 74 73 72 71 70 6F  ghi.zyxwvutsrqpo

加密后的密文:
00124522  15 79 9E 02 40 A8 8F AE AE 5A 9C 7C 05 06 E5 10  y?@◤Z渱?
00124532  43 8D 6C A6 84 A2 4F 4C 41 C1 E9 E1 0C 51 FF 0E  C峫LA灵?Q
雪    币: 60
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
smilegood 2009-9-10 20:01
4
0
肯定是可以解密的,不过给的条件太少看不出来是什么算法。
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ds2002 2009-9-26 03:00
5
0
终于有眉目了,可能是BlowFish算法,每次加密8个字节正好64位字符。4张各为1024字节的密码表正好是BlowFish算法的sbox密码表,  BlowFish加密算法需要两个过程:密钥预处理 和信息加密。 我给出的程序应该是信息加密部分。同志们给个建议怎么写解密算法。

致意革命的敬礼!!
雪    币: 22
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SFQin 2009-9-29 13:14
6
0
随便在网上找个blowfish的加密解密算法,验证下就行了,固定的算法,不用自己写解密算法。
游客
登录 | 注册 方可回帖
返回