首页
社区
课程
招聘
[求助]DES算法求助
2013-5-28 08:59 13011

[求助]DES算法求助

2013-5-28 08:59
13011
潜水数载,泪两行,
   学艺不精,空悲叹。

   公司一套软件找不到开发商,软件是DES算法,希望大牛出手相助。(一个月薪水报酬)

   大概流程  

   E762001B03255555  和 03A9C51B7F6923B2   
   加密结果69EAF44C6B28CDD0
   
    E662001B03255555  和 03A9C51B7F6923B2   
   加密结果03C71BCC108AACBA

    E562001B03255555  和 03A9C51B7F6923B2   
   加密结果DD477D222D6FC0FB

KEYDLL 里面的  DataEncrypt 函数

00E92BFC >  55                 push ebp
00E92BFD    8BEC              mov ebp,esp
00E92BFF    B9 05000000  mov ecx,5
00E92C04    6A 00             push 0
00E92C06    6A 00             push 0
00E92C08    49                  dec ecx
00E92C09  ^ 75 F9            jnz short KeyDll.00E92C04
00E92C0B    53                  push ebx
00E92C0C    56                  push esi
00E92C0D    8B45 08         mov eax,dword ptr ss:[ebp+8]            
00E92C10    E8 0312FFFF  call KeyDll.00E83E18
00E92C15    8B45 0C         mov eax,dword ptr ss:[ebp+C]            
00E92C18    E8 FB11FFFF  call KeyDll.00E83E18
00E92C1D    33C0             xor eax,eax
00E92C1F    55                  push ebp
00E92C20    68 162DE900     push KeyDll.00E92D16
00E92C25    64:FF30         push dword ptr fs:[eax]
00E92C28    64:8920         mov dword ptr fs:[eax],esp
00E92C2B    33DB              xor ebx,ebx
00E92C2D    8D75 F8         lea esi,dword ptr ss:[ebp-8]
00E92C30    8D45 E4         lea eax,dword ptr ss:[ebp-1C]
00E92C33    50                  push eax
00E92C34    8BD3              mov edx,ebx
00E92C36    03D2             add edx,edx
00E92C38    42                  inc edx
00E92C39    B9 02000000     mov ecx,2
00E92C3E    8B45 08         mov eax,dword ptr ss:[ebp+8]
00E92C41    E8 3A12FFFF     |call KeyDll.00E83E80
00E92C46    8B4D E4         |mov ecx,dword ptr ss:[ebp-1C]
00E92C49    8D45 E8         |lea eax,dword ptr ss:[ebp-18]
00E92C4C    BA 302DE900     |mov edx,KeyDll.00E92D30                 ; $
00E92C51    E8 1E10FFFF     |call KeyDll.00E83C74
00E92C56    8B45 E8         |mov eax,dword ptr ss:[ebp-18]
00E92C59    E8 1A3EFFFF     |call KeyDll.00E86A78
00E92C5E    8806            |mov byte ptr ds:[esi],al
00E92C60    43              |inc ebx
00E92C61    46              |inc esi
00E92C62    83FB 08         |cmp ebx,8
00E92C65  ^ 75 C9           \jnz short KeyDll.00E92C30         //上面循环把第一个参数文本变16进制格式      
00E92C67    33DB            xor ebx,ebx
00E92C69    8D75 F0         lea esi,dword ptr ss:[ebp-10]
00E92C6C    8D45 DC         /lea eax,dword ptr ss:[ebp-24]
00E92C6F    50              |push eax
00E92C70    8BD3            |mov edx,ebx
00E92C72    03D2            |add edx,edx
00E92C74    42              |inc edx
00E92C75    B9 02000000     |mov ecx,2
00E92C7A    8B45 0C            |mov eax,dword ptr ss:[ebp+C]           
00E92C7D    E8 FE11FFFF     |call KeyDll.00E83E80
00E92C82    8B4D DC         |mov ecx,dword ptr ss:[ebp-24]
00E92C85    8D45 E0         |lea eax,dword ptr ss:[ebp-20]
00E92C88    BA 302DE900     |mov edx,KeyDll.00E92D30
00E92C8D    E8 E20FFFFF     |call KeyDll.00E83C74
00E92C92    8B45 E0         |mov eax,dword ptr ss:[ebp-20]
00E92C95    E8 DE3DFFFF     |call KeyDll.00E86A78
00E92C9A    8806            |mov byte ptr ds:[esi],al
00E92C9C    43              |inc ebx
00E92C9D    46              |inc esi
00E92C9E    83FB 08         |cmp ebx,8
00E92CA1  ^ 75 C9           \jnz short KeyDll.00E92C6C   //上面循环把第二个参数文本变16进制格式      

00E92CA3    6A 07           push 7
00E92CA5    8D45 F0         lea eax,dword ptr ss:[ebp-10]
00E92CA8    50              push eax
00E92CA9    6A 07           push 7
00E92CAB    8D45 F8         lea eax,dword ptr ss:[ebp-8]
00E92CAE    50              push eax
00E92CAF    E8 84F8FFFF     call KeyDll.00E92538                  //计算结果部分               
00E92CB4    8D45 EC         lea eax,dword ptr ss:[ebp-14]
00E92CB7    E8 D00CFFFF     call KeyDll.00E8398C
00E92CBC    BB 08000000     mov ebx,8
00E92CC1    8D75 F8         lea esi,dword ptr ss:[ebp-8]
00E92CC4    8D4D D8         /lea ecx,dword ptr ss:[ebp-28]         
00E92CC7    33C0            |xor eax,eax
00E92CC9    8A06            |mov al,byte ptr ds:[esi]
00E92CCB    BA 02000000     |mov edx,2
00E92CD0    E8 7B3DFFFF     |call KeyDll.00E86A50
00E92CD5    8B55 D8         |mov edx,dword ptr ss:[ebp-28]
00E92CD8    8D45 EC         |lea eax,dword ptr ss:[ebp-14]
00E92CDB    E8 500FFFFF     |call KeyDll.00E83C30
00E92CE0    46              |inc esi
00E92CE1    4B              |dec ebx
00E92CE2  ^ 75 E0           \jnz short KeyDll.00E92CC4           //把计算的结果转文本格式
00E92CE4    8B45 EC         mov eax,dword ptr ss:[ebp-14]
00E92CE7    E8 3C11FFFF     call KeyDll.00E83E28
00E92CEC    8BD8            mov ebx,eax
00E92CEE    33C0            xor eax,eax
00E92CF0    5A              pop edx
00E92CF1    59              pop ecx
00E92CF2    59              pop ecx
00E92CF3    64:8910         mov dword ptr fs:[eax],edx
00E92CF6    68 1D2DE900     push KeyDll.00E92D1D
00E92CFB    8D45 D8         lea eax,dword ptr ss:[ebp-28]
00E92CFE    BA 06000000     mov edx,6
00E92D03    E8 A80CFFFF     call KeyDll.00E839B0
00E92D08    8D45 08         lea eax,dword ptr ss:[ebp+8]
00E92D0B    BA 02000000     mov edx,2
00E92D10    E8 9B0CFFFF     call KeyDll.00E839B0
00E92D15    C3              retn

//下面是算法部分
00E92538    55              push ebp
00E92539    8BEC            mov ebp,esp
00E9253B    83C4 C4         add esp,-3C
00E9253E    53              push ebx
00E9253F    56              push esi
00E92540    57              push edi
00E92541    6A 37           push 37
00E92543    68 7434E900     push KeyDll.00E93474
00E92548    6A 38           push 38
00E9254A    6A 07           push 7
00E9254C    8D45 F0         lea eax,dword ptr ss:[ebp-10]
00E9254F    50              push eax
00E92550    8B45 14         mov eax,dword ptr ss:[ebp+14]
00E92553    50              push eax
00E92554    8B45 10         mov eax,dword ptr ss:[ebp+10]
00E92557    50              push eax
00E92558    E8 6F030000     call KeyDll.00E928CC
00E9255D    33FF            xor edi,edi
00E9255F    BB 8048E900     mov ebx,KeyDll.00E94880
00E92564    57              /push edi
00E92565    6A 07           |push 7
00E92567    53              |push ebx
00E92568    6A 07           |push 7
00E9256A    8D45 F0         |lea eax,dword ptr ss:[ebp-10]
00E9256D    50              |push eax
00E9256E    E8 F9010000     |call KeyDll.00E9276C
00E92573    47              |inc edi
00E92574    83C3 08         |add ebx,8
00E92577    83FF 10         |cmp edi,10
00E9257A  ^ 75 E8           \jnz short KeyDll.00E92564
00E9257C    6A 3F           push 3F
00E9257E    68 A433E900     push KeyDll.00E933A4
00E92583    6A 40           push 40
00E92585    6A 07           push 7
00E92587    8D45 F8         lea eax,dword ptr ss:[ebp-8]
00E9258A    50              push eax
00E9258B    8B45 0C         mov eax,dword ptr ss:[ebp+C]
00E9258E    50              push eax
00E9258F    8B45 08         mov eax,dword ptr ss:[ebp+8]
00E92592    50              push eax
00E92593    E8 34030000     call KeyDll.00E928CC
00E92598    8A45 F8         mov al,byte ptr ss:[ebp-8]
00E9259B    8845 EC         mov byte ptr ss:[ebp-14],al
00E9259E    8A45 F9         mov al,byte ptr ss:[ebp-7]
00E925A1    8845 ED         mov byte ptr ss:[ebp-13],al
00E925A4    8A45 FA         mov al,byte ptr ss:[ebp-6]
00E925A7    8845 EE         mov byte ptr ss:[ebp-12],al
00E925AA    8A45 FB         mov al,byte ptr ss:[ebp-5]
00E925AD    8845 EF         mov byte ptr ss:[ebp-11],al
00E925B0    8A45 FC         mov al,byte ptr ss:[ebp-4]
00E925B3    8845 E8         mov byte ptr ss:[ebp-18],al
00E925B6    8A45 FD         mov al,byte ptr ss:[ebp-3]
00E925B9    8845 E9         mov byte ptr ss:[ebp-17],al
00E925BC    8A45 FE         mov al,byte ptr ss:[ebp-2]
00E925BF    8845 EA         mov byte ptr ss:[ebp-16],al
00E925C2    8A45 FF         mov al,byte ptr ss:[ebp-1]
00E925C5    8845 EB         mov byte ptr ss:[ebp-15],al
00E925C8    BE 10000000     mov esi,10
00E925CD    C745 C4 8048E90>mov dword ptr ss:[ebp-3C],KeyDll.00E9488>
00E925D4    6A 2F           /push 2F
00E925D6    68 2434E900     |push KeyDll.00E93424
00E925DB    6A 30           |push 30
00E925DD    6A 07           |push 7
00E925DF    8D45 D8         |lea eax,dword ptr ss:[ebp-28]
00E925E2    50              |push eax
00E925E3    6A 03           |push 3
00E925E5    8D45 E8         |lea eax,dword ptr ss:[ebp-18]
00E925E8    50              |push eax
00E925E9    E8 DA030000     |call KeyDll.00E929C8
00E925EE    BF 08000000     |mov edi,8
00E925F3    8B45 C4         |mov eax,dword ptr ss:[ebp-3C]
00E925F6    8D55 D0         |lea edx,dword ptr ss:[ebp-30]
00E925F9    8A08            |/mov cl,byte ptr ds:[eax]
00E925FB    880A            ||mov byte ptr ds:[edx],cl
00E925FD    42              ||inc edx
00E925FE    40              ||inc eax
00E925FF    4F              ||dec edi
00E92600  ^ 75 F7           |\jnz short KeyDll.00E925F9
00E92602    BF 08000000     |mov edi,8
00E92607    8D45 D8         |lea eax,dword ptr ss:[ebp-28]
00E9260A    8D4D D0         |lea ecx,dword ptr ss:[ebp-30]
00E9260D    8A11            |/mov dl,byte ptr ds:[ecx]
00E9260F    3210            ||xor dl,byte ptr ds:[eax]
00E92611    8810            ||mov byte ptr ds:[eax],dl
00E92613    41              ||inc ecx
00E92614    40              ||inc eax
00E92615    4F              ||dec edi
00E92616  ^ 75 F5           |\jnz short KeyDll.00E9260D
00E92618    33C0            |xor eax,eax
00E9261A    8A45 D8         |mov al,byte ptr ss:[ebp-28]
00E9261D    8A80 DC34E900   |mov al,byte ptr ds:[eax+E934DC]
00E92623    C1E0 04         |shl eax,4
00E92626    33D2            |xor edx,edx
00E92628    8A55 D9         |mov dl,byte ptr ss:[ebp-27]
00E9262B    8A92 1C35E900   |mov dl,byte ptr ds:[edx+E9351C]
00E92631    0AC2            |or al,dl
00E92633    8845 CC         |mov byte ptr ss:[ebp-34],al
00E92636    33C0            |xor eax,eax
00E92638    8A45 DA         |mov al,byte ptr ss:[ebp-26]
00E9263B    8A80 5C35E900   |mov al,byte ptr ds:[eax+E9355C]
00E92641    C1E0 04         |shl eax,4
00E92644    33D2            |xor edx,edx
00E92646    8A55 DB         |mov dl,byte ptr ss:[ebp-25]
00E92649    8A92 9C35E900   |mov dl,byte ptr ds:[edx+E9359C]
00E9264F    0AC2            |or al,dl
00E92651    8845 CD         |mov byte ptr ss:[ebp-33],al
00E92654    33C0            |xor eax,eax
00E92656    8A45 DC         |mov al,byte ptr ss:[ebp-24]
00E92659    8A80 DC35E900   |mov al,byte ptr ds:[eax+E935DC]
00E9265F    C1E0 04         |shl eax,4
00E92662    33D2            |xor edx,edx
00E92664    8A55 DD         |mov dl,byte ptr ss:[ebp-23]
00E92667    8A92 1C36E900   |mov dl,byte ptr ds:[edx+E9361C]
00E9266D    0AC2            |or al,dl
00E9266F    8845 CE         |mov byte ptr ss:[ebp-32],al
00E92672    33C0            |xor eax,eax
00E92674    8A45 DE         |mov al,byte ptr ss:[ebp-22]
00E92677    8A80 5C36E900   |mov al,byte ptr ds:[eax+E9365C]
00E9267D    C1E0 04         |shl eax,4
00E92680    33D2            |xor edx,edx
00E92682    8A55 DF         |mov dl,byte ptr ss:[ebp-21]
00E92685    8A92 9C36E900   |mov dl,byte ptr ds:[edx+E9369C]
00E9268B    0AC2            |or al,dl
00E9268D    8845 CF         |mov byte ptr ss:[ebp-31],al
00E92690    6A 1F           |push 1F
00E92692    68 5434E900     |push KeyDll.00E93454
00E92697    6A 20           |push 20
00E92699    6A 03           |push 3
00E9269B    8D45 C8         |lea eax,dword ptr ss:[ebp-38]
00E9269E    50              |push eax
00E9269F    6A 03           |push 3
00E926A1    8D45 CC         |lea eax,dword ptr ss:[ebp-34]
00E926A4    50              |push eax
00E926A5    E8 22020000     |call KeyDll.00E928CC
00E926AA    BF 04000000     |mov edi,4
00E926AF    8D4D EC         |lea ecx,dword ptr ss:[ebp-14]
00E926B2    8D45 C8         |lea eax,dword ptr ss:[ebp-38]
00E926B5    8D55 E0         |lea edx,dword ptr ss:[ebp-20]
00E926B8    8A19            |mov bl,byte ptr ds:[ecx]
00E926BA    3218            |xor bl,byte ptr ds:[eax]
00E926BC    881A            |mov byte ptr ds:[edx],bl
00E926BE    42              |inc edx
00E926BF    40              |inc eax
00E926C0    41              |inc ecx
00E926C1    4F              |dec edi
00E926C2  ^ 75 F4           |jnz short KeyDll.00E926B8
00E926C4    8A45 E8         |mov al,byte ptr ss:[ebp-18]
00E926C7    8845 E4         |mov byte ptr ss:[ebp-1C],al
00E926CA    8A45 E9         |mov al,byte ptr ss:[ebp-17]
00E926CD    8845 E5         |mov byte ptr ss:[ebp-1B],al
00E926D0    8A45 EA         |mov al,byte ptr ss:[ebp-16]
00E926D3    8845 E6         |mov byte ptr ss:[ebp-1A],al
00E926D6    8A45 EB         |mov al,byte ptr ss:[ebp-15]
00E926D9    8845 E7         |mov byte ptr ss:[ebp-19],al
00E926DC    8A55 E0         |mov dl,byte ptr ss:[ebp-20]
00E926DF    8855 E8         |mov byte ptr ss:[ebp-18],dl
00E926E2    8A55 E1         |mov dl,byte ptr ss:[ebp-1F]
00E926E5    8855 E9         |mov byte ptr ss:[ebp-17],dl
00E926E8    8A55 E2         |mov dl,byte ptr ss:[ebp-1E]
00E926EB    8855 EA         |mov byte ptr ss:[ebp-16],dl
00E926EE    8A55 E3         |mov dl,byte ptr ss:[ebp-1D]
00E926F1    8855 EB         |mov byte ptr ss:[ebp-15],dl
00E926F4    8A55 E4         |mov dl,byte ptr ss:[ebp-1C]
00E926F7    8855 EC         |mov byte ptr ss:[ebp-14],dl
00E926FA    8A55 E5         |mov dl,byte ptr ss:[ebp-1B]
00E926FD    8855 ED         |mov byte ptr ss:[ebp-13],dl
00E92700    8A55 E6         |mov dl,byte ptr ss:[ebp-1A]
00E92703    8855 EE         |mov byte ptr ss:[ebp-12],dl
00E92706    8845 EF         |mov byte ptr ss:[ebp-11],al
00E92709    8345 C4 08      |add dword ptr ss:[ebp-3C],8
00E9270D    4E              |dec esi
00E9270E  ^ 0F85 C0FEFFFF   \jnz KeyDll.00E925D4
00E92714    8A45 EC         mov al,byte ptr ss:[ebp-14]
00E92717    8845 F8         mov byte ptr ss:[ebp-8],al
00E9271A    8A45 ED         mov al,byte ptr ss:[ebp-13]
00E9271D    8845 F9         mov byte ptr ss:[ebp-7],al
00E92720    8A45 EE         mov al,byte ptr ss:[ebp-12]
00E92723    8845 FA         mov byte ptr ss:[ebp-6],al
00E92726    8A45 EF         mov al,byte ptr ss:[ebp-11]
00E92729    8845 FB         mov byte ptr ss:[ebp-5],al
00E9272C    8A45 E8         mov al,byte ptr ss:[ebp-18]
00E9272F    8845 FC         mov byte ptr ss:[ebp-4],al
00E92732    8A45 E9         mov al,byte ptr ss:[ebp-17]
00E92735    8845 FD         mov byte ptr ss:[ebp-3],al
00E92738    8A45 EA         mov al,byte ptr ss:[ebp-16]
00E9273B    8845 FE         mov byte ptr ss:[ebp-2],al
00E9273E    8A45 EB         mov al,byte ptr ss:[ebp-15]
00E92741    8845 FF         mov byte ptr ss:[ebp-1],al
00E92744    6A 3F           push 3F
00E92746    68 E433E900     push KeyDll.00E933E4
00E9274B    6A 40           push 40
00E9274D    8B45 0C         mov eax,dword ptr ss:[ebp+C]
00E92750    50              push eax
00E92751    8B45 08         mov eax,dword ptr ss:[ebp+8]
00E92754    50              push eax
00E92755    6A 07           push 7
00E92757    8D45 F8         lea eax,dword ptr ss:[ebp-8]
00E9275A    50              push eax
00E9275B    E8 6C010000     call KeyDll.00E928CC
00E92760    33C0            xor eax,eax
00E92762    5F              pop edi
00E92763    5E              pop esi
00E92764    5B              pop ebx
00E92765    8BE5            mov esp,ebp
00E92767    5D              pop ebp
00E92768    C2 1000         retn 10

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (13)
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-5-28 10:33
2
0
有朋友可以帮我写个对应算法加密解密工具么。  这是写两个个EXE来调用这个算法DLL
上传的附件:
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-5-29 04:21
3
0
呜呜,不能沉了啊。。。。。几个月工资奉上,不知能不能搞定。。(RMB10000)
雪    币: 276
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kwzlj 2013-6-15 19:12
4
0
DES算法似乎不难啊,没人接?
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-6-16 23:16
5
0
难不难,我没法去说他..如果有高人能解, 愿意用万来报酬.
雪    币: 626
活跃值: (668)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
MistHill 6 2013-6-21 18:52
6
0
楼主悬赏都卍了,竟然没人理!看来还需要提高赏金

决定看看究竟是什么玩艺儿。
Keydll.dll是很古老的东西了,不知楼主从哪里翻出来的。



DES作为标准因为不够安全,已经被撤销。作为算法,DEA还是可以玩的。
DES的源码可以一抓一大把,从封装了又封装的到纯粹的Raw Source Code。
算法并不复杂,但要满足楼主的要求却不容易,虽说都遵循DES标准,但算法的具体实现却各显神通:用楼主的输入却得不到相同的输出。
不得不逆向它,进行仔细研究。结果是:
1) 用VC写了一个DLL Caller: CallKeyDLL.exe。它需要在相同文件夹下存在第一个附件"Keydll.rar"里的“原版”Keydll.dll。
2) 但是dll没有Decryption函数,又重写了个小东西,包含Encrypt/Decrypt两个函数。



PS:
楼主第二个附件"算法调用.rar"里的dll被人修改过。输出函数DataEncrypt里的LStrAddRef和LStrArrayClr调用被NOP掉了。
其中dyong.exe是用E写的,显然编写者不明白AnsiString在内存中的结构。不NOP掉,Caller会Crash。

CallKeyDLL.exe.7z
上传的附件:
雪    币: 71
活跃值: (271)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haiguaiyf 2013-7-3 17:24
7
0
我接,
联系我
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-7-7 17:13
8
0
是我用E写的,因为猜不完整他的输入参数,就自己写了一个,然后强行得出结果。。。
谢谢你的分析。
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-7-7 17:21
9
0
你这已经是逆向出来了, 测试过其他两个么。
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
张鹤郎 2013-7-7 17:25
10
0
可以联系我的QQ,或者站内短信。。。谢谢
雪    币: 626
活跃值: (668)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
MistHill 6 2013-7-9 10:27
11
0
当然测试过,只要算法正确,结果必然一致。

Keydll.dll可视为一个第三方DLL(a third-party .DLL)。正常情况下,Keydll.dll的开发者应该还提供一个头文件(.h)和一个导入库文件(.lib)给调用它的开发人员使用。
这样开发人员会方便一些,只需载入时动态连接(load-time dynamic linking)。同时也可很容易地修改为其他编程语言所用。
在没有.h和.lib的情况下,只能进行运行时动态连接(run-time dynamic linking)。上面的CallKeyDLL.exe就是使用这种方式,其实很简单,就三个API:LoadLibraryAGetProcAddressFreeLibrary

前面说过,Keydll.dll没有解密函数,其他标准DES库又不能用。我得根据它的特定算法重写,事实上它也是遵循DES标准的,但没具体去研究到底是哪一步的差异导致与标准库的结果不同。
改写项目的结果:DesDll.dll,DesDll.h和DesDll.lib。但是DesDll.dll里面只有两个导出函数:DataEncrypt和DataDecrypt,如果楼主要调用原来Keydll.dll里的其他导出函数就有问题了。

进一步地,我在原来Keydll.dll导出函数DataEncrypt的基础上,为其手工增加了一个导出函数DataDecrypt。这个方案比较完美。
根据DES标准,"With DES it is possible to use the same function to encrypt or decrypt a block.",即原则上可用同一函数来加密和解密数据组,但需要少量修改。
经过程序"DLL Caller"第二版CallKeyDLLv2.c(运行时动态连接)测试加密/解密,修改后的Keydll.dll完全正常。

剩下的工作是需要为修改后的Keydll.dll生成Keydll.h和Keydll.lib。

打算写个帖子讲怎么在不增加区段/节(Section)的情况下,为Keydll.dll手工添加导出函数DataDecrypt的过程,这里面有些东西很有意思,应该对需要熟悉PE结构的人或新手有帮助。

但不清楚楼主这个东西的状况,需要沟通得到许可才能发。
雪    币: 221
活跃值: (2006)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lhglhg 1 2013-7-9 14:45
12
0
支持教程!!!
雪    币: 39
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhxiong 2013-11-1 11:56
13
0
支持教程!!!
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2013-11-1 15:11
14
0
其实没看懂楼主想做啥。

1、如果是要写DES算法实现,随便写啊。 现成的就有。

2、如果是要用。他这软件不是有dll了么。 直接动态调用就可以了啊。

其他方面也跟算法没有关系了。
游客
登录 | 注册 方可回帖
返回