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 编辑 ] 精华提前留名!!! 好厉害阿 。。。已经是高手了 我是菜鸟,来学习一下 这个是不错的软件啊!!! 上面4楼的都是版主了,怎么还那么谦虚啊 谦虚不为过 谦虚使人进步 祝贺LZ了..想看看注册机源码,可以否/>虽然我也看不懂源码. 谢谢楼主提供的好东西,支持~~~ 都这么多的牛人,好好学习拉