首页
社区
课程
招聘
[求助]分析下加密算法
发表于: 2013-2-25 17:08 6940

[求助]分析下加密算法

2013-2-25 17:08
6940
呵呵,算法不懂,只知道,循环结束后,输入加密后存储在eax中,哪位朋友可以帮忙分析下这段加密代码?谢谢!

.text:00401788 loc_401788:                             ; CODE XREF: sub_4012E9+319j
.text:00401788                 xor     ecx, ecx
.text:0040178A                 or      eax, 0FFFFFFFFh
.text:0040178D                 cmp     byte_4DEC20, cl  
.text:00401793                 jz      short loc_4017CD
.text:00401795
.text:00401795 loc_401795:                             ; CODE XREF: sub_4012E9+4E2j
.text:00401795                 movsx   edx, byte_4DEC20[ecx] =》 取待加密字符
.text:0040179C                 lea     esi, [edx-41h]
.text:0040179F                 cmp     esi, 19h
.text:004017A2                 ja      short loc_4017A7
.text:004017A4                 or      edx, 20h
.text:004017A7
.text:004017A7 loc_4017A7:                             ; CODE XREF: sub_4012E9+4B9j
.text:004017A7                 xor     eax, edx
.text:004017A9                 mov     edx, eax
.text:004017AB                 and     edx, 0FFh
.text:004017B1                 mov     edx, dword_4D1520[edx*4]
.text:004017B8                 sar     eax, 8
.text:004017BB                 xor     eax, edx
.text:004017BD                 inc     ecx
.text:004017BE                 cmp     byte_4DEC20[ecx], 0 =》判断待加密的字符串是否结束
.text:004017C5                 mov     dword_4DE9C8, edx
.text:004017CB                 jnz     short loc_401795

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 407
活跃值: (125)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
2
CRC32 吧
2013-2-25 17:13
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
......
2013-2-25 17:18
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
EricAzhe兄,这个怎么看出来的啊?

我用PEid查出来的位置跟上面这段代码的位置完全对不上啊?
CRC32 [poly] :: 000ECBBD :: 004F89BD
        The reference is above.
CRC32 [poly] :: 000ED212 :: 004F9012
        The reference is above.

CRC32算法有啥资料可以参考不?呵呵,我自己也在论坛里搜搜看,谢谢兄!
2013-2-25 17:19
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=bridgeic;1145838]EricAzhe兄,这个怎么看出来的啊?

我用PEid查出来的位置跟上面这段代码的位置完全对不上啊?
CRC32 [poly] :: 000ECBBD :: 004F89BD
        The reference is above.
CRC32 [poly] :: 000ED212 :: 004F9012...[/QUOTE]
这个可能是我理解错了,是一个范围,不是一个点
2013-2-25 17:45
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
不知道是这个不?这两天慢慢消化下。

http://bbs.pediy.com/showthread.php?t=41398

DestString = 需要计算CRC码的字符串
i=为字符串的索引,初始为0.
CRC寄存器=用于保存最终的CRC码的寄存器(可设为EAX或者其它通用寄存器)
1.将CRC寄存器中的位全部初始为1,即mov eax,-1
2.将CRC寄存器中低8位与DestString[i]字符异或,i++,得到一个CRC表的索引
3.根据第2步得到的索引从CRC表中找出相应的值.
4.将CRC寄存器右移8位,然后与第3步得到的值异或,将最终结果放入CRC寄存器
5.循环处理2-4步,直到全部字符处理完毕

最终CRC寄存器中就是字符串的CRC码
2013-2-25 17:58
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
不好意思,重复发帖了,删除
2013-2-27 15:26
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
为什么CRC32表和标准的CRC32表不一样呢?

check 0x4D1520

.data:004D1520 ; int dword_4D1520[]
.data:004D1520 dword_4D1520    dd 0, 11013096h, 1330B129h, 9909512Ah, 16D9A19h, 106AFA8Fh
.data:004D1520                                         ; DATA XREF: sub_401005+1Er
.data:004D1520                                         ; sub_4012E9+4C8r
.data:004D1520                 dd 3963A535h, 9BA95A3h, 3DA8832h, 19D9A82Ah, 30D53913h
.data:004D1520                 dd 91D2D988h, 9A6A92Ah, 13A119ADh, 31A82D01h, 90AF1D91h
.data:004D1520                 dd 1DA1106Ah, 62A020F2h, 0F3A911A8h, 82A3A1D3h, 1ADADA1Dh
.data:004D1520                 dd 6DDD3A3Ah, 0FAD2A551h, 83D38591h, 51B99856h, 6A62A890h
.data:004D1520                 dd 0FD62F91Ah, 8A659939h, 1A0159AFh, 630669D9h, 0FA0F3D63h
.data:004D1520                 dd 8D080DF5h, 3A632098h, 0A9691053h, 0D560A13Ah, 0A2611112h
.data:004D1520                 dd 39033AD1h, 2A0AD2A1h, 0D20D85FDh, 0A502A56Ah, 35A5A8FAh
.data:004D1520                 dd 0A2A29869h, 0D22A99D6h, 0A9A9F9A0h, 32D86933h, 0A5DF5915h
.data:004D1520                 dd 0D9D60D9Fh, 2AD13D59h, 26D930A9h, 51D3003Ah, 98D15180h
.data:004D1520                 dd 0AFD06116h, 212AF2A5h, 56A39A23h, 9F2A9599h, 0A8ADA50Fh
.data:004D1520                 dd 2802A893h, 5F058808h, 9609D9A2h, 0A10A392Ah, 2F6F1981h
.data:004D1520                 dd 5868A911h, 91611D2Ah, 0A6662D3Dh, 16D9A190h, 1DA1106h
.data:004D1520                 dd 98D220A9h, 3FD5102Ah, 11A18589h, 6A6A51Fh, 9FAF32A5h
.data:004D1520                 dd 38A8DA33h, 180199A2h, 0F00F93Ah, 9609A883h, 31039818h
.data:004D1520                 dd 1F6A0D2Ah, 86D3D2Dh, 916A6991h, 5B635901h, 6A6A51FAh
.data:004D1520                 dd 19696162h, 856530D8h, 0F26200A3h, 6906953Dh, 1A01A51Ah
.data:004D1520                 dd 8208FA91h, 0F50F9A51h, 65A0D996h, 12A13950h, 82A3A83Ah
.data:004D1520                 dd 0F9A98819h, 62DD1DDFh, 15DA2DA9h, 89D319F3h, 0FAD2A965h
.data:004D1520                 dd 0ADA26158h, 32A55193h, 0A3A9001Ah, 0D22A3032h, 2ADFA5A1h
.data:004D1520                 dd 3DD895D1h, 2AD19A6Dh, 0D3D6FAFAh, 3AB9396Ah, 3A63D9F9h
.data:004D1520                 dd 0AD6188A6h, 0DA60A8D0h, 2A0A2D13h, 33031D35h, 2A02A95Fh
.data:004D1520                 dd 0DD0D1999h, 50051139h, 2102A12Ah, 0A30A1010h, 99092086h
.data:004D1520                 dd 5168A525h, 206F85A3h, 0A966DA09h, 0E9B13A9Fh, 53D3F903h
.data:004D1520                 dd 29D99998h, 0A0D09822h, 91D1A82Ah, 59A33D11h, 232A0D81h
.data:004D1520                 dd 0A1AD593Ah, 902A69ADh, 3DA88320h, 92AFA3A6h, 3A63209h
.data:004D1520                 dd 12A1D29Ah, 3AD5A139h, 9DD211AFh, 0ADA2615h, 13D91683h
.data:004D1520                 dd 73B30A12h, 9A6A3A8Ah, 0D6D6A33h, 1A6A52A8h, 3A039F0Ah
.data:004D1520                 dd 9309FF9Dh, 0A00A321h, 1D0193A1h, 0F00F932Ah, 8108A3D2h
.data:004D1520                 dd 1301F268h, 690692F3h, 0F162515Dh, 8065619Ah, 11969B11h
.data:004D1520                 dd 76BA0631h, 0F3DA1A16h, 89D32A30h, 10DA1A5Ah, 61DD2A99h
.data:004D1520                 dd 0F9A9DF6Fh, 83A33FF9h, 11A1A3A3h, 60A083D5h, 0D6D6A338h
.data:004D1520                 dd 0A1D19313h, 38D8929Ah, 0AFDFF252h, 0D12A61F1h, 0A6A95161h
.data:004D1520                 dd 3FA506DDh, 2A8A2B2Ah, 0D80D2ADAh, 0AF0A12A9h, 0FB032AF6h
.data:004D1520                 dd 0A10A1A60h, 0DF603F93h, 0A861DF55h, 3163833Fh, 0A669A319h
.data:004D1520                 dd 9A61A389h, 0A966831Ah, 256FD2A0h, 8526832Bh, 99091195h
.data:004D1520                 dd 2A02A103h, 220216A9h, 5505262Fh, 952A32A3h, 0A2AD0A28h
.data:004D1520                 dd 222A5A92h, 659ABA0Ah, 92D1FFA1h, 0A5D09F31h, 29D9938Ah
.data:004D1520                 dd 5AD3A31Dh, 9A6A92A0h, 3963F226h, 1562A399h, 26D930Ah
.data:004D1520                 dd 990906A9h, 63A03B3Fh, 12016185h, 5005113h, 95AF2A82h
.data:004D1520                 dd 32A81A1Ah, 12A122A3h, 9A61A38h, 92D2839Ah, 35D5A30Dh
.data:004D1520                 dd 19D93FA1h, 0ADADF21h, 86D3D2DAh, 0F1DA32A2h, 68DDA3F8h
.data:004D1520                 dd 0B1FDA8B3h, 81A3169Dh, 0F6A9265Ah, 6FA01131h, 18A1A111h
.data:004D1520                 dd 0D88085ABh, 0FF0F6A10h, 66063A9Ah, 11010A59h, 8F6593FFh
.data:004D1520                 dd 1F862AB9h, 616AFFD3h, 16699FA5h, 0A00A3218h, 0D10DD233h
.data:004D1520                 dd 0A30A835Ah, 3903A392h, 0A1612661h, 0D06016F1h, 0A969A1ADh
.data:004D1520                 dd 63B311DAh, 0A3D1622Ah, 0D9D65AD9h, 0A0DF0A66h, 31D83AF0h
.data:004D1520                 dd 0A9A9A353h, 0D32A9395h, 0A1A29F1Fh, 30A5FF39h, 0ADADF219h
.data:004D1520                 dd 922A928Ah, 53A39330h, 22A2A3A6h, 0F2AD0B05h, 9DD10693h
.data:004D1520                 dd 5AD35129h, 23D961AFh, 0AB61A230h, 9A6122A8h, 5D681A02h
.data:004D1520                 dd 2A6F2A9Ah, 2A02A331h, 930983A1h, 5A05DF1Ah, 2D023F8Dh
.data:004D1520                 dd 0FFFFFFFFh
2013-2-27 15:26
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
这个CRC32我看了好两天了,好像还是有问题。

1. CRC32表好像不是标准的CRC32表
2. 我用标准CRC32表替换了PE文件中的CRC32表,可是做了下测试,出来的加密值还是与CRC32工具算出的值不同

是哪里理解错误,还是程序用的是非标准的CRC32算法,哪位高人可以帮忙看看不,可以提供原PE文件的,谢谢啦!
2013-3-1 16:09
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
类CRC32算法
2013-4-7 01:37
0
游客
登录 | 注册 方可回帖
返回
//