何求 发表于 2007-11-13 14:57:37

USBKillert算法分析(高手飞过)

【破文标题】USBKillert算法分析
【破文作者】何求
【作者邮箱】
【作者主页】
【破解工具】PEiD,OD
【破解平台】盗版Windows XP
【软件名称】USBKiller
【软件大小】没看
【原版下载】网上有下载
【保护方式】壳、注册码
【软件简介】我的U盘中毒了,所以找到这个软件,没有想到这样的小软件还需要注册。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
------------------------------------------------------------------------
一、用peid查壳,UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo,脱吧,很容易。

二、OD载入。ASCII搜索。可以很容易找到关键点。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
004D080A    55            PUSH EBP                                 ; 程序断在这里。F8单步
004D080B    68 2C094D00   PUSH USBKille.004D092C
004D0810    64:FF30         PUSH DWORD PTR FS:
004D0813    64:8920         MOV DWORD PTR FS:,ESP
004D0816    B2 01         MOV DL,1
004D0818    A1 A4CC4C00   MOV EAX,DWORD PTR DS:
004D081D    E8 D6C4FFFF   CALL USBKille.004CCCF8                   ; 出一串字符,不管。往下走看。
004D0822    8BF0            MOV ESI,EAX
004D0824    8D55 F4         LEA EDX,DWORD PTR SS:
004D0827    8BC6            MOV EAX,ESI
004D0829    E8 92C8FFFF   CALL USBKille.004CD0C0
004D082E    8B55 F4         MOV EDX,DWORD PTR SS:             ; 机器码放到EDX中。
004D0831    8B83 90040000   MOV EAX,DWORD PTR DS:
004D0837    E8 CC58F9FF   CALL USBKille.00466108
004D083C    8BC6            MOV EAX,ESI
004D083E    E8 BDC7FFFF   CALL USBKille.004CD000                   ; 关键call,F7跟进。
004D0843    2C 01         SUB AL,1                                 ; AL-1
004D0845    72 0D         JB SHORT USBKille.004D0854
004D0847    2C 02         SUB AL,2                                 ; AL-2,如果他两个的值想等就over了。
004D0849    0F84 89000000   JE USBKille.004D08D8                     ; 这里就是关键跳了,也是爆破点。
004D084F    E9 A9000000   JMP USBKille.004D08FD
004D0854    8B83 6C040000   MOV EAX,DWORD PTR DS:
004D085A    E8 A58EF9FF   CALL USBKille.00469704
004D085F    8BF8            MOV EDI,EAX
004D0861    4F            DEC EDI
004D0862    85FF            TEST EDI,EDI
004D0864    7C 23         JL SHORT USBKille.004D0889
004D0866    47            INC EDI
004D0867    C745 F8 0000000>MOV DWORD PTR SS:,0
004D086E    8B55 F8         MOV EDX,DWORD PTR SS:
004D0871    8B83 6C040000   MOV EAX,DWORD PTR DS:
004D0877    E8 4C8EF9FF   CALL USBKille.004696C8
004D087C    33D2            XOR EDX,EDX
004D087E    8B08            MOV ECX,DWORD PTR DS:
004D0880    FF51 64         CALL DWORD PTR DS:
004D0883    FF45 F8         INC DWORD PTR SS:
004D0886    4F            DEC EDI
004D0887^ 75 E5         JNZ SHORT USBKille.004D086E
004D0889    BA 48094D00   MOV EDX,USBKille.004D0948                ; 已注册
004D088E    8B83 88040000   MOV EAX,DWORD PTR DS:
004D0894    E8 6F58F9FF   CALL USBKille.00466108
004D0899    8D55 F0         LEA EDX,DWORD PTR SS:
004D089C    8BC6            MOV EAX,ESI
004D089E    E8 8DCAFFFF   CALL USBKille.004CD330
004D08A3    8B55 F0         MOV EDX,DWORD PTR SS:
004D08A6    8B83 94040000   MOV EAX,DWORD PTR DS:
004D08AC    E8 5758F9FF   CALL USBKille.00466108
004D08B1    C645 FF 01      MOV BYTE PTR SS:,1
004D08B5    8D55 EC         LEA EDX,DWORD PTR SS:
004D08B8    8BC3            MOV EAX,EBX
004D08BA    E8 1958F9FF   CALL USBKille.004660D8
004D08BF    8D45 EC         LEA EAX,DWORD PTR SS:
004D08C2    BA 58094D00   MOV EDX,USBKille.004D0958                ;(已注册)
004D08C7    E8 BC46F3FF   CALL USBKille.00404F88
004D08CC    8B55 EC         MOV EDX,DWORD PTR SS:
004D08CF    8BC3            MOV EAX,EBX
004D08D1    E8 3258F9FF   CALL USBKille.00466108
004D08D6    EB 25         JMP SHORT USBKille.004D08FD
004D08D8    C645 FF 00      MOV BYTE PTR SS:,0
004D08DC    8D55 E8         LEA EDX,DWORD PTR SS:
004D08DF    8BC3            MOV EAX,EBX
004D08E1    E8 F257F9FF   CALL USBKille.004660D8
004D08E6    8D45 E8         LEA EAX,DWORD PTR SS:
004D08E9    BA 6C094D00   MOV EDX,USBKille.004D096C                ;(未注册)
004D08EE    E8 9546F3FF   CALL USBKille.00404F88
004D08F3    8B55 E8         MOV EDX,DWORD PTR SS:
004D08F6    8BC3            MOV EAX,EBX
004D08F8    E8 0B58F9FF   CALL USBKille.00466108
004D08FD    8BC6            MOV EAX,ESI
004D08FF    E8 D035F3FF   CALL USBKille.00403ED4
004D0904    33C0            XOR EAX,EAX
004D0906    5A            POP EDX
004D0907    59            POP ECX
004D0908    59            POP ECX
004D0909    64:8910         MOV DWORD PTR FS:,EDX
004D090C    68 33094D00   PUSH USBKille.004D0933
004D0911    8D45 E8         LEA EAX,DWORD PTR SS:
004D0914    BA 02000000   MOV EDX,2
004D0919    E8 C643F3FF   CALL USBKille.00404CE4
004D091E    8D45 F0         LEA EAX,DWORD PTR SS:
004D0921    BA 02000000   MOV EDX,2
004D0926    E8 B943F3FF   CALL USBKille.00404CE4
004D092B    C3            RETN
004D092C^ E9 4B3DF3FF   JMP USBKille.0040467C
004D0931^ EB DE         JMP SHORT USBKille.004D0911
004D0933    8A45 FF         MOV AL,BYTE PTR SS:
004D0936    5F            POP EDI
004D0937    5E            POP ESI
004D0938    5B            POP EBX
004D0939    8BE5            MOV ESP,EBP
004D093B    5D            POP EBP
004D093C    C3            RETN

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
F7跟进点
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

004CD000    55            PUSH EBP                                 ; 关键CALL入口点。
004CD001    8BEC            MOV EBP,ESP
004CD003    6A 00         PUSH 0
004CD005    6A 00         PUSH 0
004CD007    53            PUSH EBX
004CD008    8BD8            MOV EBX,EAX
004CD00A    33C0            XOR EAX,EAX
004CD00C    55            PUSH EBP
004CD00D    68 5CD04C00   PUSH USBKille.004CD05C
004CD012    64:FF30         PUSH DWORD PTR FS:
004CD015    64:8920         MOV DWORD PTR FS:,ESP
004CD018    8D55 FC         LEA EDX,DWORD PTR SS:
004CD01B    8BC3            MOV EAX,EBX
004CD01D    E8 0E030000   CALL USBKille.004CD330
004CD022    8B45 FC         MOV EAX,DWORD PTR SS:             ; 这里出现一个KEY
004CD025    50            PUSH EAX                                 ; 其实就是输入注册码后建立的一个文件。
004CD026    8D55 F8         LEA EDX,DWORD PTR SS:             ; 重新启动后要读取里边的注册码验证。
004CD029    8BC3            MOV EAX,EBX
004CD02B    E8 3C000000   CALL USBKille.004CD06C                   ; 又是一个关键跳。F7跟进。
004CD030    8B55 F8         MOV EDX,DWORD PTR SS:             ; 这里是真码放到EDX中。
004CD033    58            POP EAX
004CD034    E8 9380F3FF   CALL USBKille.004050CC
004CD039    74 04         JE SHORT USBKille.004CD03F
004CD03B    B3 03         MOV BL,3
004CD03D    EB 02         JMP SHORT USBKille.004CD041
004CD03F    33DB            XOR EBX,EBX
004CD041    33C0            XOR EAX,EAX
004CD043    5A            POP EDX
004CD044    59            POP ECX
004CD045    59            POP ECX
004CD046    64:8910         MOV DWORD PTR FS:,EDX
004CD049    68 63D04C00   PUSH USBKille.004CD063
004CD04E    8D45 F8         LEA EAX,DWORD PTR SS:
004CD051    BA 02000000   MOV EDX,2
004CD056    E8 897CF3FF   CALL USBKille.00404CE4
004CD05B    C3            RETN
004CD05C^ E9 1B76F3FF   JMP USBKille.0040467C
004CD061^ EB EB         JMP SHORT USBKille.004CD04E
004CD063    8BC3            MOV EAX,EBX
004CD065    5B            POP EBX
004CD066    59            POP ECX
004CD067    59            POP ECX
004CD068    5D            POP EBP
004CD069    C3            RETN

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
F7跟进点
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
004CD06C    55            PUSH EBP                                 ; 关键call里。F8单步
004CD06D    8BEC            MOV EBP,ESP
004CD06F    6A 00         PUSH 0
004CD071    53            PUSH EBX
004CD072    56            PUSH ESI
004CD073    8BF2            MOV ESI,EDX
004CD075    8BD8            MOV EBX,EAX
004CD077    33C0            XOR EAX,EAX
004CD079    55            PUSH EBP
004CD07A    68 B1D04C00   PUSH USBKille.004CD0B1
004CD07F    64:FF30         PUSH DWORD PTR FS:
004CD082    64:8920         MOV DWORD PTR FS:,ESP
004CD085    8D55 FC         LEA EDX,DWORD PTR SS:
004CD088    8BC3            MOV EAX,EBX
004CD08A    E8 31000000   CALL USBKille.004CD0C0
004CD08F    8B55 FC         MOV EDX,DWORD PTR SS:             ; 机器码放EDX中。
004CD092    8BCE            MOV ECX,ESI
004CD094    8BC3            MOV EAX,EBX
004CD096    E8 F5FDFFFF   CALL USBKille.004CCE90                   ; 这个call也是关键,F7跟进。
004CD09B    33C0            XOR EAX,EAX
004CD09D    5A            POP EDX
004CD09E    59            POP ECX
004CD09F    59            POP ECX
004CD0A0    64:8910         MOV DWORD PTR FS:,EDX
004CD0A3    68 B8D04C00   PUSH USBKille.004CD0B8
004CD0A8    8D45 FC         LEA EAX,DWORD PTR SS:
004CD0AB    E8 107CF3FF   CALL USBKille.00404CC0
004CD0B0    C3            RETN
004CD0B1^ E9 C675F3FF   JMP USBKille.0040467C
004CD0B6^ EB F0         JMP SHORT USBKille.004CD0A8
004CD0B8    5E            POP ESI
004CD0B9    5B            POP EBX
004CD0BA    59            POP ECX
004CD0BB    5D            POP EBP

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
F7跟进点
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
004CCE90    55            PUSH EBP                                 ; 又进入CALL,F8单步跟进。
004CCE91    8BEC            MOV EBP,ESP
004CCE93    83C4 F0         ADD ESP,-10
004CCE96    53            PUSH EBX
004CCE97    56            PUSH ESI
004CCE98    57            PUSH EDI
004CCE99    33DB            XOR EBX,EBX                              ; EBX清零。
004CCE9B    895D F0         MOV DWORD PTR SS:,EBX
004CCE9E    895D F4         MOV DWORD PTR SS:,EBX
004CCEA1    894D F8         MOV DWORD PTR SS:,ECX
004CCEA4    8955 FC         MOV DWORD PTR SS:,EDX
004CCEA7    8B45 FC         MOV EAX,DWORD PTR SS:
004CCEAA    E8 C182F3FF   CALL USBKille.00405170
004CCEAF    33C0            XOR EAX,EAX
004CCEB1    55            PUSH EBP
004CCEB2    68 5DCF4C00   PUSH USBKille.004CCF5D
004CCEB7    64:FF30         PUSH DWORD PTR FS:
004CCEBA    64:8920         MOV DWORD PTR FS:,ESP
004CCEBD    8D45 F4         LEA EAX,DWORD PTR SS:
004CCEC0    E8 FB7DF3FF   CALL USBKille.00404CC0
004CCEC5    8B45 FC         MOV EAX,DWORD PTR SS:
004CCEC8    E8 B380F3FF   CALL USBKille.00404F80                   ; 这个CALL是取机器码的位数。
004CCECD    8BF8            MOV EDI,EAX
004CCECF    85FF            TEST EDI,EDI
004CCED1    7E 5C         JLE SHORT USBKille.004CCF2F
004CCED3    BB 01000000   MOV EBX,1                              ; 1放到EBX中。
004CCED8    8D43 1E         LEA EAX,DWORD PTR DS:            ; EBX起始值为1+1E。放EAX中。
004CCEDB    50            PUSH EAX                                 ; 又压入栈。
004CCEDC    8BC3            MOV EAX,EBX                              ; EBX放EAX中。
004CCEDE    5A            POP EDX
004CCEDF    8BCA            MOV ECX,EDX                              ; EDX放ECX中。
004CCEE1    99            CDQ
004CCEE2    F7F9            IDIV ECX                                 ; 相除。
004CCEE4    8BF2            MOV ESI,EDX                              ; EDX放ESI
004CCEE6    8D43 14         LEA EAX,DWORD PTR DS:            ; EBX+14放EAX中。
004CCEE9    50            PUSH EAX                                 ; 又压入栈。
004CCEEA    8BC3            MOV EAX,EBX
004CCEEC    5A            POP EDX
004CCEED    8BCA            MOV ECX,EDX
004CCEEF    99            CDQ
004CCEF0    F7F9            IDIV ECX                                 ; 又是上次算得的余数除相加的值。
004CCEF2    03F2            ADD ESI,EDX                              ; 余数在ESI
004CCEF4    8B45 FC         MOV EAX,DWORD PTR SS:             ; 机器码放EAX中。
004CCEF7    0FB64418 FF   MOVZX EAX,BYTE PTR DS:      ; 取机器码的第一位值的ASCII
004CCEFC    03C6            ADD EAX,ESI                              ; EAX加上ESI
004CCEFE    83C0 D0         ADD EAX,-30                              ; EAX加上-30
004CCF01    83E8 0A         SUB EAX,0A                               ; 再减10(A)
004CCF04    72 08         JB SHORT USBKille.004CCF0E
004CCF06    83C0 F9         ADD EAX,-7                               ; EAX又加-7
004CCF09    83E8 1A         SUB EAX,1A                               ; 再减1A
004CCF0C    73 1D         JNB SHORT USBKille.004CCF2B
004CCF0E    8D45 F0         LEA EAX,DWORD PTR SS:
004CCF11    8B55 FC         MOV EDX,DWORD PTR SS:             ; 机器码放EAX中。
004CCF14    0FB6541A FF   MOVZX EDX,BYTE PTR DS:      ; 取第一位值放EDX中。。
004CCF19    03D6            ADD EDX,ESI                              ; EDX加上ESI,这就是注册的第一位,通过这样反复的运算。得到注册码。
004CCF1B    E8 887FF3FF   CALL USBKille.00404EA8
004CCF20    8B55 F0         MOV EDX,DWORD PTR SS:
004CCF23    8D45 F4         LEA EAX,DWORD PTR SS:
004CCF26    E8 5D80F3FF   CALL USBKille.00404F88
004CCF2B    43            INC EBX                                  ; EBX的值不断的累加。
004CCF2C    4F            DEC EDI                                  ; EDI减每次减一。
004CCF2D^ 75 A9         JNZ SHORT USBKille.004CCED8            ; 不等就返回。
004CCF2F    8B45 F8         MOV EAX,DWORD PTR SS:
004CCF32    8B55 F4         MOV EDX,DWORD PTR SS:             ; 真码放EDX中。
004CCF35    E8 DA7DF3FF   CALL USBKille.00404D14
004CCF3A    33C0            XOR EAX,EAX                              ; EAX清零。
004CCF3C    5A            POP EDX
004CCF3D    59            POP ECX
004CCF3E    59            POP ECX
004CCF3F    64:8910         MOV DWORD PTR FS:,EDX
004CCF42    68 64CF4C00   PUSH USBKille.004CCF64
004CCF47    8D45 F0         LEA EAX,DWORD PTR SS:
004CCF4A    BA 02000000   MOV EDX,2
004CCF4F    E8 907DF3FF   CALL USBKille.00404CE4
004CCF54    8D45 FC         LEA EAX,DWORD PTR SS:
004CCF57    E8 647DF3FF   CALL USBKille.00404CC0
004CCF5C    C3            RETN

------------------------------------------------------------------------
算法很容易,好久不写破文了,请大家见谅。呵。不总结了,注册机也很好写。我用这个软件处理了U盘的病毒。和锁死问题,还不错。
------------------------------------------------------------------------
【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

[ 本帖最后由 何求 于 2007-11-13 14:59 编辑 ]

网络断魂 发表于 2007-11-13 15:27:01

精华提前留名!!!

sufeiyu 发表于 2007-11-15 17:20:33

好厉害阿 。。。已经是高手了

tianxj 发表于 2007-11-15 21:43:22

我是菜鸟,来学习一下

joyyazi 发表于 2007-11-16 12:25:53

这个是不错的软件啊!!!

joyyazi 发表于 2007-11-24 17:59:43

上面4楼的都是版主了,怎么还那么谦虚啊

gdwz2008 发表于 2007-11-25 23:49:56

谦虚不为过   谦虚使人进步

blitz 发表于 2007-11-29 23:08:41

祝贺LZ了..想看看注册机源码,可以否/>虽然我也看不懂源码.

ddxy 发表于 2007-12-25 02:46:11

谢谢楼主提供的好东西,支持~~~

cxl0825 发表于 2007-12-28 15:47:22

都这么多的牛人,好好学习拉
页: [1] 2 3 4
查看完整版本: USBKillert算法分析(高手飞过)