逆向Becky! Internet Mail version 2 密码加密算法 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

   

    逆向Becky! Internet Mail version 2 密码加密算法

    【文章作者】: crosoli

    【作者邮箱】:crosoli@126.com

    【软件名称】: Becky! Internet Mail

    【下载地址】: 自己搜索下载

    【编写语言】: VC6.0

    【软件介绍】: 邮件收取工具

    【作者声明】: 出于学习的目的

    --------------------------------------------------------------------------------

    【详细过程】

    1,上个月买了本段刚老师的加密解密3,看完了第5章(只能下班的时间看),总感觉作者很了解我. 这本书太适合我了.

    2.分析过程.

    1,首先打开Becky! Internet Mail,配置好自己的邮件信息.

    2,然后OD载入 B2.exe, F9运行后,右键点击邮件->属性,然后修改密码,此时对 GetWindowTextA下断点. 会发现配件的所有信息都会读入到内存.让发现密码明文读取到内存后,然后数据窗口跟随,找到密码的明文,并对它下内存断点.并移除先前的GetWindowTextA断点.

    F9运行后程序来到:

    0051A8C5 |. 85DB         TEST EBX,EBX

    0051A8C7 |. 75 3A        JNZ SHORT B2.0051A903

    0051A8C9 |. 8B86 B8000000 MOV EAX,DWORD PTR DS:[ESI+B8]           ;  新密码

    0051A8CF |. 8BAF B8000000 MOV EBP,DWORD PTR DS:[EDI+B8]           ;  老密码

    0051A8D5 |> 87747.net5 00      /MOV DL,BYTE PTR SS:[EBP]               ; 取老密码一位

    0051A8D8 |. 8ACA         |MOV CL,DL

    0051A8DA |. 3A10         |CMP DL,BYTE PTR DS:[EAX]               ; 取新密码一位

    0051A8DC |. 75 1C        |JNZ SHORT B2.0051A8FA                  ; 密码不相同跳转

    0051A8DE |. 84C9         |TEST CL,CL

    0051A8E0 |. 74 14        |JE SHORT B2.0051A8F6

    0051A8E2 |. 87747.net5 01      |MOV DL,BYTE PTR SS:[EBP+1]             ; 继续比较

    0051A8E5 |. 8ACA         |MOV CL,DL

    0051A8E7 |. 37747.net0 01      |CMP DL,BYTE PTR DS:[EAX+1]

    0051A8EA |. 75 0E        |JNZ SHORT B2.0051A8FA

    0051A8EC |. 83C5 02      |ADD EBP,2

    0051A8EF |. 83C0 02      |ADD EAX,2

    0051A8F2 |. 84C9         |TEST CL,CL

    0051A8F4 |.^ 75 DF        \JNZ SHORT B2.0051A8D5

    0051A8F6 |> 33C0         XOR EAX,EAX

    0051A8F8 |. EB 05        JMP SHORT B2.0051A8FF

    0051A8FA |> 1BC0         SBB EAX,EAX                             ;

    0051A8FC |. 83D8 FF      SBB EAX,-1

    0051A8FF |> 85C0         TEST EAX,EAX

    0051A901 |. 74 5F        JE SHORT B2.0051A962                    ; 原密码和新密码相同时候跳过不写入

    0051A903 |> 8DAE B8000000 LEA EBP,DWORD PTR DS:[ESI+B8]

    0051A909 |. 8D8F B8000000 LEA ECX,DWORD PTR DS:[EDI+B8]

    0051A90F |. 55           PUSH EBP

    0051A910 |. E8 22280800  CALL B2.0059D137

    0051A915 |. 8B6D 00      MOV EBP,DWORD PTR SS:[EBP]

    0051A918 |. A1 38685F00  MOV EAX,DWORD PTR DS:[5F6838]

    0051A91D |. 55           PUSH EBP

    0051A91E |. 68 00100000  PUSH 1000

    0051A923 |. 8D4C24 24    LEA ECX,DWORD PTR SS:[ESP+24]

    0051A927 |. 894424 24    MOV DWORD PTR SS:[ESP+24],EAX

    0051A92B |. E8 FE2A0800  CALL B2.0059D42E

    0051A930 |. 50           PUSH EAX

    0051A931 |. E8 4A00F7FF  CALL B2.0048A980                       ;对新密码进行加密处理,

逆向Becky! Internet Mail version 2 密码加密算法

    0051A936 |. 6A FF        PUSH -1

    0051A938 |. 8D4C24 20    LEA ECX,DWORD PTR SS:[ESP+20]

    0051A93C |. E8 3C2B0800  CALL B2.0059D47D

    0051A941 |. 8B0E         MOV ECX,DWORD PTR DS:[ESI]

    0051A943 |. 8B5424 1C    MOV EDX,DWORD PTR SS:[ESP+1C]

    0051A947 |. 51           PUSH ECX                                ; /FileName

    0051A948 |. 52           PUSH EDX                                ; |String

    0051A949 |. 68 B8B35E00  PUSH B2.005EB3B8                        ; |Key = "PassWd"

    0051A94E |. 68 E4E15E00  PUSH B2.005EE1E4                        ; |Section = "Account"

    0051A953 |. FF15 64225C00 CALL DWORD PTR DS:[<&KERNEL32.WritePriva>; \WritePrivateProfileStringA   把加密后的新密码写入配置文件的"PassWd"字段

    下面来分析0048A980 这个函数

    0051A931 |. E8 4A00F7FF  CALL B2.0048A980                       ;对新密码进行加密处理,

电脑资料

逆向Becky! Internet Mail version 2 密码加密算法》(https://www.unjs.com)。

    0048A980 /$ B8 00800000  MOV EAX,8000

    0048A985 |. E8 268F0F00  CALL B2.005838B0

    0048A98A |. 8B8424 088000>MOV EAX,DWORD PTR SS:[ESP+8008]         ;EAX新密码

    0048A991 |. 56           PUSH ESI

    0048A992 |. 8038 00      CMP BYTE PTR DS:[EAX],0                 ;判断新密码是不是为空

    0048A995 |. 75 14        JNZ SHORT B2.0048A9AB

    0048A997 |. 8B8424 088000>MOV EAX,DWORD PTR SS:[ESP+8008]

    0048A99E |. 5E           POP ESI

    0048A99F |. C600 00      MOV BYTE PTR DS:[EAX],0

    0048A9A2 |. 81C4 00800000 ADD ESP,8000

    0048A9A8 |. C2 0800      RETN 8

    0048A9AB |> 8D4C24 04    LEA ECX,DWORD PTR SS:[ESP+4]

    0048A9AF |. 50           PUSH EAX                                ; /Arg2

    0048A9B0 |. 51           PUSH ECX                                ; |Arg1

    0048A9B1 |. E8 8AF5FFFF  CALL B2.00489F40                        ; \B2.00489F40     第一次对新密码进行00489F40加密处理

    0048A9B6 |. 8D5424 04    LEA EDX,DWORD PTR SS:[ESP+4]

    0048A9BA |. 8BB424 088000>MOV ESI,DWORD PTR SS:[ESP+8008]

    0048A9C1 |. 52           PUSH EDX                                ; /Arg2

    0048A9C2 |. 56           PUSH ESI                                ; |Arg1

    0048A9C3 |. E8 78F5FFFF  CALL B2.00489F40                        ; \B2.00489F40     2次加密

    0048A9C8 |. 8A06         MOV AL,BYTE PTR DS:[ESI]

    0048A9CA |. 84C0         TEST AL,AL

    0048A9CC |. 74 0C        JE SHORT B2.0048A9DA

    0048A9CE |> 34 02        /XOR AL,2                               ;把2次加密码后的结果和2进行xor

    0048A9D0 |. 8806         |MOV BYTE PTR DS:[ESI],AL

    0048A9D2 |. 8A46 01      |MOV AL,BYTE PTR DS:[ESI+1]

    0048A9D5 |. 46           |INC ESI

    0048A9D6 |. 84C0         |TEST AL,AL

    0048A9D8 |.^ 75 F4        \JNZ SHORT B2.0048A9CE                  ;循环xor

    0048A9DA |> 5E           POP ESI

    0048A9DB |. 81C4 00800000 ADD ESP,8000

    0048A9E1 \. C2 0800      RETN 8

    下面来分析00489F40这个加密函数

    00489F40 /$ 83EC 0C      SUB ESP,0C

    00489F43 |. 8B4424 10    MOV EAX,DWORD PTR SS:[ESP+10]

    00489F47 |. 53           PUSH EBX

    00489F48 |. 57           PUSH EDI

    00489F49 |. 8B7C24 1C    MOV EDI,DWORD PTR SS:[ESP+1C]

    00489F4D |. 32DB         XOR BL,BL

    00489F4F |. 894424 08    MOV DWORD PTR SS:[ESP+8],EAX

    00489F53 |. 8A0F         MOV CL,BYTE PTR DS:[EDI]

    00489F55 |. 3ACB         CMP CL,BL

    00489F57 |. 0F84 CF000000 JE B2.0048A02C

    00489F5D |. 55           PUSH EBP

    00489F5E |. 56           PUSH ESI

    00489F5F |> 47           /INC EDI

    00489F60 |. 884C24 14    |MOV BYTE PTR SS:[ESP+14],CL           ;base64加密。

    00489F64 |. 885C24 16    |MOV BYTE PTR SS:[ESP+16],BL

    00489F68 |. 885C24 15    |MOV BYTE PTR SS:[ESP+15],BL

    00489F6C |. 8A0F         |MOV CL,BYTE PTR DS:[EDI]

    00489F6E |. BE 01000000  |MOV ESI,1

    00489F73 |. 3ACB         |CMP CL,BL

    00489F75 |. 74 1A        |JE SHORT B2.00489F91

    ..

    ..

    ...

    ....

    由于篇幅的文件就不对BASE64进行分析了。

    其实00489F40 就是一个BASE64的加密。

    综上所述 他的密码的保存方式就是 2次BASE64后xor2.

最新文章