首页
社区
课程
招聘
[求助]求解一个解密算法的加密算法
发表于: 2011-11-14 13:50 6516

[求助]求解一个解密算法的加密算法

2011-11-14 13:50
6516
解密算法汇编代码如下:
0040767F   .  90                    NOP                                    
00407680   >  8BCE                  MOV     ECX,ESI
00407682   .  83E1 03               AND     ECX,3
00407685   .  8A8C0D B0F6FFFF       MOV     CL,BYTE PTR SS:[EBP+ECX-950]     ;密钥04 07 76 19
0040768C   .  328C35 C8FAFFFF       XOR     CL,BYTE PTR SS:[EBP+ESI-538]     
00407693   .  46                    INC     ESI
00407694   .  8AC1                  MOV     AL,CL
00407696   .  8AD1                  MOV     DL,CL
00407698   .  D0E8                  SHR     AL,1
0040769A   .  02D2                  ADD     DL,DL
0040769C   .  32C2                  XOR     AL,DL
0040769E   .  02C9                  ADD     CL,CL
004076A0   .  24 55                 AND     AL,55
004076A2   .  32C1                  XOR     AL,CL
004076A4   .  8AD0                  MOV     DL,AL
004076A6   .  8AC8                  MOV     CL,AL
004076A8   .  C0E9 02               SHR     CL,2
004076AB   .  02D2                  ADD     DL,DL
004076AD   .  02D2                  ADD     DL,DL
004076AF   .  32CA                  XOR     CL,DL
004076B1   .  02C0                  ADD     AL,AL
004076B3   .  80E1 33               AND     CL,33
004076B6   .  02C0                  ADD     AL,AL
004076B8   .  32C8                  XOR     CL,AL
004076BA   .  C0C1 04               ROL     CL,4
004076BD   .  888C35 C7FAFFFF       MOV     BYTE PTR SS:[EBP+ESI-539],CL
004076C4   .  3BF7                  CMP     ESI,EDI
004076C6   .^ 7C B8                 JL      SHORT OfficeTa.00407680
004076C8   >  8B85 B4F6FFFF         MOV     EAX,DWORD PTR SS:[EBP-94C]

IDA反编译F5伪代码如下:
        v70 = 0;
        v103 = v106;
        if ( v104 > 0 )
        {
          v71 = v104;
          do
          {
            v72 = v110[v70] ^ *((_BYTE *)&v103 + (v70 & 3));
            ++v70;
            v73 = 4 * (2 * v72 ^ (2 * v72 ^ (v72 >> 1)) & 0x55);
            v74 = __ROL__(v73 ^ (v73 ^ ((unsigned __int8)(2 * v72 ^ (2 * v72 ^ (v72 >> 1)) & 0x55) >> 2)) & 0x33, 4);
            *(&v109 + v70) = v74;
          }
          while ( v70 < v71 );
        }

求解这个算法的加密算法,谢谢各位大牛。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 4200
活跃值: (4178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这算法简单,倒着写回去就是加密 倒着照抄的
2011-11-18 11:43
0
雪    币: 276
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢回复,但里面有两个and算法,怎么还原?
2011-11-19 18:40
0
游客
登录 | 注册 方可回帖
返回
//