• 标 题: 彩虹的DL(也叫软件狗)
  • 作 者:nig
  • 时 间:004-08-28,22:54
  • 链 接:http://bbs.pediy.com

Fly兄弟既然点我名,我当然首当其冲了。主程序是狗壳,彩虹的DL(也叫软件狗),去狗壳很容易,一会我把关键点贴出来,和OEP,你有兴趣,可以脱它。
程序中的BS.zf是一个动态库,也加了壳了。是狗的驱动库了。我也告诉你OEP和密钥。你来玩它吧。等一下,我把资料整理一下贴出来。
这种狗壳会加密IAT的。

BS.ZF 的分析

第一步,将读狗处返回0,否则得改不少跳转。
005ECFDA   83C4 0C       ADD ESP,0C
005ECFDD   59            POP ECX
005ECFDE   5A            POP EDX
005ECFDF   C3            RETN
005ECFE0   33C0          XOR EAX,EAX               //此处
005ECFE2   C3            RETN
005ECFE3   81EC 78010000 SUB ESP,178
005ECFE9   53            PUSH EBX
005ECFEA   33C9          XOR ECX,ECX
005ECFEC   56            PUSH ESI
005ECFED   57            PUSH EDI
005ECFEE   894D FC       MOV DWORD PTR SS:[EBP-4],ECX
005ECFF1   90            NOP


第二步,给狗壳密匙
005EB96F   A1 104D5F00      MOV EAX,DWORD PTR DS:[5F4D10]
005EB974   A3 BC345F00      MOV DWORD PTR DS:[5F34BC],EAX      //EAX=97H正确
005EB979   8B45 F0          MOV EAX,DWORD PTR SS:[EBP-10]
005EB97C   EB 00            JMP SHORT BS.005EB97E


第三步 程序解码
005EAAB4   33D2             XOR EDX,EDX
005EAAB6   8A1401           MOV DL,BYTE PTR DS:[ECX+EAX]
005EAAB9   33C0             XOR EAX,EAX
005EAABB   A0 BC345F00      MOV AL,BYTE PTR DS:[5F34BC]
005EAAC0   2BD0             SUB EDX,EAX
005EAAC2   8B45 B4          MOV EAX,DWORD PTR SS:[EBP-4C]
005EAAC5   25 FFFF0000      AND EAX,0FFFF
005EAACA   8B4D B8          MOV ECX,DWORD PTR SS:[EBP-48]
005EAACD   881401           MOV BYTE PTR DS:[ECX+EAX],DL     -正是狗壳解码过程。
005EAAD0  ^EB 85            JMP SHORT BS.005EAA57

第四步 解码完的数据
005F2000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
005F2010  00 00 00 00 00 00 00 00 3C 11 5E 00 E8 10 5E 00  ........<^.?^.
005F2020  A4 10 5E 00 14 11 5E 00 00 47 53 5F 56 45 52 53  ?^.^..GS_VERS
005F2030  49 4F 4E 5F 49 4E 46 4F 00 01 00 01 00 00 00 67  ION_INFO.....g
005F2040  73 76 74 79 70 65 2E 68 00 78 69 61 6E 67 64 73  svtype.h.xiangds
005F2050  68 00 31 39 39 39 2D 34 2D 38 00 47 53 2D 47 53  h.1999-4-8.GS-GS
005F2060  56 54 59 50 45 00 00 00 00 47 53 5F 56 45 52 53  VTYPE....GS_VERS
005F2070  49 4F 4E 5F 49 4E 46 4F 00 01 00 01 00 00 00 64  ION_INFO.....d
005F2080  6C 6B 65 72 6E 65 6C 2E 68 00 79 61 6E 67 6C 00  lkernel.h.yangl.
005F2090  32 30 30 30 2D 31 30 2D 30 39 00 52 47 2D 44 4C  2000-10-09.RG-DL
005F20A0  2D 4B 45 52 4E 45 4C 00 00 00 00 47 53 5F 56 45  -KERNEL....GS_VE
005F20B0  52 53 49 4F 4E 5F 49 4E 46 4F 00 00 00 00 00 00  RSION_INFO......
005F20C0  00 44 6A 50 6C 61 74 66 6F 72 6D 2E 68 00 5A 68  .DjPlatform.h.Zh
005F20D0  61 6E 67 20 4A 69 6E 67 00 32 30 30 30 2D 35 2D  ang Jing.2000-5-
005F20E0  31 32 00 47 53 2D 44 4A 2D 4C 4D 2D 57 33 32 50  12.GS-DJ-LM-W32P
005F20F0  4C 54 46 4D 00 00 00 00 47 53 5F 56 45 52 53 49  LTFM....GS_VERSI
005F2100  4F 4E 5F 49 4E 46 4F 00 00 00 00 00 00 00 44 6A  ON_INFO.......Dj
005F2110  50 6C 61 74 66 6F 72 6D 2E 63 00 5A 68 61 6E 67  Platform.c.Zhang
005F2120  20 4A 69 6E 67 00 32 30 30 30 2D 35 2D 31 32 00   Jing.2000-5-12.
005F2130  47 53 2D 44 4A 2D 4C 4D 2D 57 33 32 50 4C 54 46  GS-DJ-LM-W32PLTF
005F2140  4D 00 00 00 08 00 00 00 01 00 00 00 08 00 00 00  M............
005F2150  08 00 00 00 02 00 00 00 00 47 53 5F 56 45 52 53  .......GS_VERS
005F2160  49 4F 4E 5F 49 4E 46 4F 00 01 00 01 00 00 00 65  ION_INFO.....e
005F2170  72 72 63 6F 64 65 2E 68 00 78 69 61 6E 67 64 73  rrcode.h.xiangds
005F2180  68 00 31 39 39 39 2D 34 2D 38 00 47 53 2D 45 52  h.1999-4-8.GS-ER
005F2190  52 4F 52 43 4F 44 45 00 00 00 00 47 53 5F 56 45  RORCODE....GS_VE
005F21A0  52 53 49 4F 4E 5F 49 4E 46 4F 00 01 00 01 00 00  RSION_INFO....
005F21B0  00 64 6C 6B 65 72 6E 65 6C 2E 63 00 79 61 6E 67  .dlkernel.c.yang
005F21C0  6C 00 32 30 30 30 2D 31 30 2D 30 39 00 52 47 2D  l.2000-10-09.RG-
005F21D0  44 4C 2D 4B 45 52 4E 45 4C 00 00 00 73 65 74 75  DL-KERNEL...setu
005F21E0  70 61 70 69 2E 64 6C 6C 00 53 65 74 75 70 44 69  papi.dll.SetupDi
005F21F0  47 65 74 43 6C 61 73 73 44 65 76 73 41 00 53 65  GetClassDevsA.Se
005F2200  74 75 70 44 69 45 6E 75 6D 44 65 76 69 63 65 49  tupDiEnumDeviceI
005F2210  6E 74 65 72 66 61 63 65 73 00 53 65 74 75 70 44  nterfaces.SetupD
005F2220  69 47 65 74 44 65 76 69 63 65 49 6E 74 65 72 66  iGetDeviceInterf
005F2230  61 63 65 44 65 74 61 69 6C 41 00 53 65 74 75 70  aceDetailA.Setup
005F2240  44 69 44 65 73 74 72 6F 79 44 65 76 69 63 65 49  DiDestroyDeviceI
005F2250  6E 66 6F 4C 69 73 74 00 6D B2 67 AE 30 0E 62 4D  nfoList.m瞘?bM
005F2260  A7 0E 3F 6F F0 4F F2 70 5C 5C 2E 5C 4C 50 54 44  ??o餙騪\\.\LPTD
005F2270  49 31 00 00 00 00 00 5C 5C 2E 5C 54 44 53 44 2E  I1.....\\.\TDSD.
005F2280  56 58 44 00 00 00 00 00 00 00 00 00 47 53 5F 56  VXD.........GS_V
005F2290  45 52 53 49 4F 4E 5F 49 4E 46 4F 00 01 00 01 00  ERSION_INFO...
005F22A0  00 00 64 6A 77 33 32 70 6C 2E 68 00 78 69 61 6E  ..djw32pl.h.xian
005F22B0  67 64 73 68 00 32 30 30 30 2D 34 2D 32 38 00 47  gdsh.2000-4-28.G
005F22C0  53 2D 44 4A 2D 4C 4D 2D 57 33 32 50 52 54 43 54  S-DJ-LM-W32PRTCT
005F22D0  00 00 00 00 47 53 5F 56 45 52 53 49 4F 4E 5F 49  ....GS_VERSION_I
005F22E0  4E 46 4F 00 01 00 01 00 00 00 64 6A 77 33 32 70  NFO.....djw32p
005F22F0  6C 2E 63 00 78 69 61 6E 67 64 73 68 00 32 30 30  l.c.xiangdsh.200
005F2300  30 2D 34 2D 32 38 00 47 53 2D 44 4A 2D 4C 4D 2D  0-4-28.GS-DJ-LM-
005F2310  57 33 32 50 52 54 43 54 00 00 00 4E 45 49 57 41  W32PRTCT...NEIWA
005F2320  49 4A 4D 4D 53 2D 44 4F 53 00 00 4E 45 49 57 41  IJMMS-DOS..NEIWA
005F2330  49 4A 4D 23 22 9E 25 31 8E E6 82 49 F6 20 3E A4  IJM#"?1庢侷?>


OEP 应该是 5E8065。  可能有误。




BiaoShu主程序的加密部分
第一步,读狗处返回值为0
006D93BD   59               POP ECX
006D93BE   5A               POP EDX
006D93BF   C3               RETN
006D93C0   33C0             XOR EAX,EAX    //此处
006D93C2   C3               RETN
006D93C3   81EC 78010000    SUB ESP,178
006D93C9   53               PUSH EBX

第二步 处理返回的密匙
006D505F   C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
006D5066   E8 3C430000      CALL BIAOSHU.006D93A7
006D506B   85C0             TEST EAX,EAX
006D506D   0F84 08000000    JE BIAOSHU.006D507B
006D5073   E8 2F430000      CALL BIAOSHU.006D93A7
006D5078   8945 FC          MOV DWORD PTR SS:[EBP-4],EAX
006D507B   A1 D0E06D00      MOV EAX,DWORD PTR DS:[6DE0D0]
006D5080   8B00             MOV EAX,DWORD PTR DS:[EAX]
006D5082   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
006D5085   8B45 F8          MOV EAX,DWORD PTR SS:[EBP-8]     //EAX=FF13CC97密匙

可以改成:
006D5082   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
006D5085   B8 97CC13FF      MOV EAX,FF13CC97
006D508A   90               NOP
006D508B   90               NOP
006D508C   90               NOP

第三步,下tc eip<6d0000 就可以到达5BB9D8  OEP了。

分析可能有错误,请兄弟们指正。


再在程序中就是验证狗了,我就不顺手做了,毕竟人家是软件产品吗,以此为例,完全是为了研究
的需要了。   nig. 2004年8月28日夜