飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2108|回复: 1

网游难民申请为PYG成员破文(四)(第三篇之更新)

[复制链接]

该用户从未签到

发表于 2006-10-13 19:04:22 | 显示全部楼层 |阅读模式
刚才发现偶写的第三篇申请里的软件已经更新了,偶也跟着更新啊~~算法没有任何改变~只是为了方便老大核对~~
【文章标题】: 易通文件夹锁2006 3.0.5.0算法分析
【文章作者】: 网游难民
【作者主页】: www.chinapyg.com
【软件名称】: 易通文件夹锁2006 3.0.5.0
【软件大小】: 3099KB
【下载地址】: http://www.newhua.com/soft/43125.htm
【加壳方式】: aspack
【保护方式】: 壳,注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD PEID
【操作平台】: XP SP2
【软件介绍】: 四大保护功能,三种保护方式。集文件夹锁、文件锁、磁盘锁、增强锁于一体.提供锁定、隐藏、移动三种保护方式。防删除,复制等.是您文件资料的安全屏障。  
    1.文件夹保护功能:文件夹保护功能具有文件夹加锁和文件夹深度隐藏两种文件夹保护方式。用户可以通过右击想要保护的文件夹,选择[易通加锁/解锁]菜单来实现保护,也可以直接进入软件主界面的文件夹锁功能区里面进行保护与解除保护。同时,保护后的文件夹可以防止复制,删除等操作。  
    2.文件保护功能:文件保护功能具有文件加锁和文件深度隐藏两种文件保护方式。用户可以通过右击想要保护的文件,选择[易通文件加密]菜单来实现保护,也可以直接进入软件主界面的文件锁功能区里面进行保护与解除保护。  
    3.磁盘保护功能:磁盘保护功能具有磁盘驱动器加锁和磁盘驱动器隐藏两种磁盘保护方式。用户可以进入软件主界面的磁盘锁功能区里面进行选择需要保护的磁盘驱动器。另外还提供了禁止使用USB设备,如U盘,USB移动硬盘等USB接口设备和禁止USB存储设备的写入功能等,保护您的资料不能通过U盘、移动硬盘等外接设备带走。  
    4.增强保护功能:增强加锁功能目前为您提供了文件夹移动保护、程序锁、文件夹伪装、高强压缩加密等功能。在以后软件的升级版本中我们还会努力为您提供更多、更实用的加锁保护功能,敬请期待!

【作者声明】: 刚把2006 3_0_2_928算法分析贴出来,发现它更新了,郁闷,再来~~~
--------------------------------------------------------------------------------
【详细过程】
  不要问偶怎么脱壳的,偶是壳盲,交给OD自己搞定,然后修复下就OK^__^
  下下bp MessageBoxA断点,找合适的地方下断,下面开始分析拉~~
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  005A2220    55              PUSH EBP
  005A2221    68 82245A00     PUSH etdirloc.005A2482
  005A2226    64:FF30         PUSH DWORD PTR FS:[EAX]
  005A2229    64:8920         MOV DWORD PTR FS:[EAX],ESP
  005A222C    8D55 F4         LEA EDX,DWORD PTR SS:[EBP-C]
  005A222F    8B83 20030000   MOV EAX,DWORD PTR DS:[EBX+320]
  005A2235    E8 1EDAFAFF     CALL etdirloc.0054FC58
  005A223A    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]             ; 用户名放入EAX~~
  005A223D    8D55 F8         LEA EDX,DWORD PTR SS:[EBP-8]
  005A2240    E8 D76CF7FF     CALL etdirloc.00518F1C
  005A2245    837D F8 00      CMP DWORD PTR SS:[EBP-8],0
  005A2249    0F84 80000000   JE etdirloc.005A22CF
  005A224F    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
  005A2252    8B83 24030000   MOV EAX,DWORD PTR DS:[EBX+324]
  005A2258    E8 FBD9FAFF     CALL etdirloc.0054FC58
  005A225D    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-14]            ; 第一列注册码
  005A2260    8D55 F0         LEA EDX,DWORD PTR SS:[EBP-10]
  005A2263    E8 B46CF7FF     CALL etdirloc.00518F1C
  005A2268    837D F0 00      CMP DWORD PTR SS:[EBP-10],0
  005A226C    0F85 9A000000   JNZ etdirloc.005A230C
  005A2272    8D55 E4         LEA EDX,DWORD PTR SS:[EBP-1C]
  005A2275    8B83 2C030000   MOV EAX,DWORD PTR DS:[EBX+32C]
  005A227B    E8 D8D9FAFF     CALL etdirloc.0054FC58
  005A2280    8B45 E4         MOV EAX,DWORD PTR SS:[EBP-1C]
  005A2283    8D55 E8         LEA EDX,DWORD PTR SS:[EBP-18]
  005A2286    E8 916CF7FF     CALL etdirloc.00518F1C
  005A228B    837D E8 00      CMP DWORD PTR SS:[EBP-18],0
  005A228F    75 7B           JNZ SHORT etdirloc.005A230C
  005A2291    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-24]
  005A2294    8B83 30030000   MOV EAX,DWORD PTR DS:[EBX+330]
  005A229A    E8 B9D9FAFF     CALL etdirloc.0054FC58
  005A229F    8B45 DC         MOV EAX,DWORD PTR SS:[EBP-24]
  005A22A2    8D55 E0         LEA EDX,DWORD PTR SS:[EBP-20]
  005A22A5    E8 726CF7FF     CALL etdirloc.00518F1C
  005A22AA    837D E0 00      CMP DWORD PTR SS:[EBP-20],0
  005A22AE    75 5C           JNZ SHORT etdirloc.005A230C
  005A22B0    8D55 D4         LEA EDX,DWORD PTR SS:[EBP-2C]
  005A22B3    8B83 34030000   MOV EAX,DWORD PTR DS:[EBX+334]
  005A22B9    E8 9AD9FAFF     CALL etdirloc.0054FC58
  005A22BE    8B45 D4         MOV EAX,DWORD PTR SS:[EBP-2C]
  005A22C1    8D55 D8         LEA EDX,DWORD PTR SS:[EBP-28]
  005A22C4    E8 536CF7FF     CALL etdirloc.00518F1C
  005A22C9    837D D8 00      CMP DWORD PTR SS:[EBP-28],0
  005A22CD    75 3D           JNZ SHORT etdirloc.005A230C
  005A22CF    68 30000400     PUSH 40030
  005A22D4    8D55 D0         LEA EDX,DWORD PTR SS:[EBP-30]
  005A22D7    B8 9C245A00     MOV EAX,etdirloc.005A249C
  005A22DC    E8 DB4BFEFF     CALL etdirloc.00586EBC
  005A22E1    8B45 D0         MOV EAX,DWORD PTR SS:[EBP-30]
  005A22E4    E8 3B2BF7FF     CALL etdirloc.00514E24
  005A22E9    50              PUSH EAX
  005A22EA    8D55 CC         LEA EDX,DWORD PTR SS:[EBP-34]
  005A22ED    B8 B4245A00     MOV EAX,etdirloc.005A24B4
  005A22F2    E8 C54BFEFF     CALL etdirloc.00586EBC
  005A22F7    8B45 CC         MOV EAX,DWORD PTR SS:[EBP-34]
  005A22FA    E8 252BF7FF     CALL etdirloc.00514E24
  005A22FF    50              PUSH EAX
  005A2300    6A 00           PUSH 0
  005A2302    E8 3D56F7FF     CALL etdirloc.00517944                   ; JMP 到 user32.MessageBoxA
  005A2307    E9 EC000000     JMP etdirloc.005A23F8
  005A230C    8D55 C8         LEA EDX,DWORD PTR SS:[EBP-38]
  005A230F    8B83 24030000   MOV EAX,DWORD PTR DS:[EBX+324]
  005A2315    E8 3ED9FAFF     CALL etdirloc.0054FC58
  005A231A    FF75 C8         PUSH DWORD PTR SS:[EBP-38]
  005A231D    8D55 C4         LEA EDX,DWORD PTR SS:[EBP-3C]
  005A2320    8B83 2C030000   MOV EAX,DWORD PTR DS:[EBX+32C]
  005A2326    E8 2DD9FAFF     CALL etdirloc.0054FC58
  005A232B    FF75 C4         PUSH DWORD PTR SS:[EBP-3C]               ; 第二列
  005A232E    8D55 C0         LEA EDX,DWORD PTR SS:[EBP-40]
  005A2331    8B83 30030000   MOV EAX,DWORD PTR DS:[EBX+330]
  005A2337    E8 1CD9FAFF     CALL etdirloc.0054FC58
  005A233C    FF75 C0         PUSH DWORD PTR SS:[EBP-40]               ; 第三列
  005A233F    8D55 BC         LEA EDX,DWORD PTR SS:[EBP-44]
  005A2342    8B83 34030000   MOV EAX,DWORD PTR DS:[EBX+334]
  005A2348    E8 0BD9FAFF     CALL etdirloc.0054FC58
  005A234D    FF75 BC         PUSH DWORD PTR SS:[EBP-44]               ; 第四列
  005A2350    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
  005A2353    BA 04000000     MOV EDX,4
  005A2358    E8 8F29F7FF     CALL etdirloc.00514CEC
  005A235D    8D55 B8         LEA EDX,DWORD PTR SS:[EBP-48]
  005A2360    8B83 20030000   MOV EAX,DWORD PTR DS:[EBX+320]
  005A2366    E8 EDD8FAFF     CALL etdirloc.0054FC58
  005A236B    8B55 B8         MOV EDX,DWORD PTR SS:[EBP-48]            ; 用户名
  005A236E    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 注册码
  005A2371    E8 4E4FFEFF     CALL etdirloc.005872C4                   ; 关键CALL,跟进~
  005A2376    84C0            TEST AL,AL                               ; 标志位检验
  005A2378    74 46           JE SHORT etdirloc.005A23C0               ; 爆破点~
  005A237A    68 40000400     PUSH 40040
  
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进上面的算法CALL:
  005872DA    55              PUSH EBP
  005872DB    68 1A745800     PUSH etdirloc.0058741A
  005872E0    64:FF30         PUSH DWORD PTR FS:[EAX]
  005872E3    64:8920         MOV DWORD PTR FS:[EAX],ESP
  005872E6    C645 FF 00      MOV BYTE PTR SS:[EBP-1],0
  005872EA    B8 50695800     MOV EAX,etdirloc.00586950
  005872EF    E8 64F8FFFF     CALL etdirloc.00586B58
  005872F4    84C0            TEST AL,AL
  005872F6    74 0C           JE SHORT etdirloc.00587304
  005872F8    A1 2CC15A00     MOV EAX,DWORD PTR DS:[5AC12C]
  005872FD    8B00            MOV EAX,DWORD PTR DS:[EAX]
  005872FF    E8 3C81FEFF     CALL etdirloc.0056F440
  00587304    B8 04675800     MOV EAX,etdirloc.00586704
  00587309    E8 4AF8FFFF     CALL etdirloc.00586B58
  0058730E    84C0            TEST AL,AL
  00587310    74 0C           JE SHORT etdirloc.0058731E
  00587312    A1 2CC15A00     MOV EAX,DWORD PTR DS:[5AC12C]
  00587317    8B00            MOV EAX,DWORD PTR DS:[EAX]
  00587319    E8 2281FEFF     CALL etdirloc.0056F440
  0058731E    B8 18685800     MOV EAX,etdirloc.00586818
  00587323    E8 30F8FFFF     CALL etdirloc.00586B58
  00587328    84C0            TEST AL,AL
  0058732A    74 0C           JE SHORT etdirloc.00587338
  0058732C    A1 2CC15A00     MOV EAX,DWORD PTR DS:[5AC12C]
  00587331    8B00            MOV EAX,DWORD PTR DS:[EAX]
  00587333    E8 0881FEFF     CALL etdirloc.0056F440
  00587338    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
  0058733B    E8 BCFAFFFF     CALL etdirloc.00586DFC                   ; 算法CALL(1)
  00587340    8D4D F0         LEA ECX,DWORD PTR SS:[EBP-10]
  00587343    8BD7            MOV EDX,EDI
  00587345    A1 7CDC5A00     MOV EAX,DWORD PTR DS:[5ADC7C]
  0058734A    E8 BDFCFFFF     CALL etdirloc.0058700C                   ; 算法CALL(2)
  0058734F    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]            ; 注册码出来了~~
  00587352    8BD6            MOV EDX,ESI
  00587354    E8 17DAF8FF     CALL etdirloc.00514D70
  00587359    0F85 A0000000   JNZ etdirloc.005873FF
  0058735F    B2 01           MOV DL,1
  
  
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  上面的算法CALL(1)是介绍怎么根据硬盘号取得机器码的:
  00586E17    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
  00586E1A    E8 5DFEFFFF     CALL etdirloc.00586C7C
  00586E1F    8D55 F8         LEA EDX,DWORD PTR SS:[EBP-8]
  00586E22    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 硬盘号放入EAX中~~
  00586E25    E8 F220F9FF     CALL etdirloc.00518F1C
  00586E2A    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]
  00586E2D    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
  00586E30    E8 D7DBF8FF     CALL etdirloc.00514A0C
  00586E35    837D FC 00      CMP DWORD PTR SS:[EBP-4],0
  00586E39    74 22           JE SHORT etdirloc.00586E5D
  00586E3B    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
  00586E3E    50              PUSH EAX
  00586E3F    33C9            XOR ECX,ECX
  00586E41    BA 12000000     MOV EDX,12
  00586E46    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 硬盘号放入EAX中~~
  00586E49    E8 FA000000     CALL etdirloc.00586F48                   ; 算法CALL(3),跟进~~
  00586E4E    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-C]             ; 机器码
  00586E51    B8 7CDC5A00     MOV EAX,etdirloc.005ADC7C
  00586E56    E8 6DDBF8FF     CALL etdirloc.005149C8
  00586E5B    EB 28           JMP SHORT etdirloc.00586E85
  00586E5D    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10]
  00586E60    50              PUSH EAX
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进算法CALL(3):
  00586F48    55              PUSH EBP
  00586F49    8BEC            MOV EBP,ESP
  00586F4B    83C4 EC         ADD ESP,-14
  00586F4E    53              PUSH EBX
  00586F4F    56              PUSH ESI
  00586F50    57              PUSH EDI
  00586F51    33DB            XOR EBX,EBX
  00586F53    895D EC         MOV DWORD PTR SS:[EBP-14],EBX
  00586F56    895D F0         MOV DWORD PTR SS:[EBP-10],EBX
  00586F59    894D F4         MOV DWORD PTR SS:[EBP-C],ECX
  00586F5C    8955 F8         MOV DWORD PTR SS:[EBP-8],EDX
  00586F5F    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
  00586F62    33C0            XOR EAX,EAX
  00586F64    55              PUSH EBP
  00586F65    68 FA6F5800     PUSH etdirloc.00586FFA
  00586F6A    64:FF30         PUSH DWORD PTR FS:[EAX]
  00586F6D    64:8920         MOV DWORD PTR FS:[EAX],ESP
  00586F70    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 机器码放入EAX~~
  00586F73    E8 B4DCF8FF     CALL etdirloc.00514C2C                   ; 机器码位数~
  00586F78    8BF8            MOV EDI,EAX
  00586F7A    85FF            TEST EDI,EDI
  00586F7C    7E 61           JLE SHORT etdirloc.00586FDF
  00586F7E    BE 01000000     MOV ESI,1
  00586F83    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  00586F86    0FB64430 FF     MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]        ; 逐位取机器码ASCII码~
  00586F8B    99              CDQ                                      ; 扩展指令
  00586F8C    F77D F8         IDIV DWORD PTR SS:[EBP-8]                ; 除以12,余数放进EDX中~
  00586F8F    8BDA            MOV EBX,EDX
  00586F91    33DE            XOR EBX,ESI                              ; 上面得到的余数与循环次数逻辑异或运算~
  00586F93    837D F4 01      CMP DWORD PTR SS:[EBP-C],1
  00586F97    75 2A           JNZ SHORT etdirloc.00586FC3
  00586F99    8BC3            MOV EAX,EBX
  00586F9B    B9 24000000     MOV ECX,24
  00586FA0    99              CDQ
  00586FA1    F7F9            IDIV ECX
  00586FA3    8BDA            MOV EBX,EDX
  00586FA5    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10]
  00586FA8    8A93 90B75A00   MOV DL,BYTE PTR DS:[EBX+5AB790]
  00586FAE    E8 A1DBF8FF     CALL etdirloc.00514B54
  00586FB3    8B55 F0         MOV EDX,DWORD PTR SS:[EBP-10]
  00586FB6    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  00586FB9    E8 76DCF8FF     CALL etdirloc.00514C34
  00586FBE    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  00586FC1    EB 18           JMP SHORT etdirloc.00586FDB
  00586FC3    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
  00586FC6    8BC3            MOV EAX,EBX
  00586FC8    E8 6B21F9FF     CALL etdirloc.00519138                   ; 把上面的计算得到数转换为十进制
  00586FCD    8B55 EC         MOV EDX,DWORD PTR SS:[EBP-14]
  00586FD0    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  00586FD3    E8 5CDCF8FF     CALL etdirloc.00514C34
  00586FD8    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  00586FDB    46              INC ESI
  00586FDC    4F              DEC EDI
  00586FDD  ^ 75 A4           JNZ SHORT etdirloc.00586F83              ; 循环结束,上面转换成十进制的数字连接起来就是机器码
  00586FDF    33C0            XOR EAX,EAX
  00586FE1    5A              POP EDX
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进算法CALL(2):
  0058700C    55              PUSH EBP
  0058700D    8BEC            MOV EBP,ESP
  0058700F    83C4 E0         ADD ESP,-20
  00587012    53              PUSH EBX
  00587013    56              PUSH ESI
  00587014    57              PUSH EDI
  00587015    33DB            XOR EBX,EBX
  00587017    895D E0         MOV DWORD PTR SS:[EBP-20],EBX
  0058701A    895D E4         MOV DWORD PTR SS:[EBP-1C],EBX
  0058701D    894D F4         MOV DWORD PTR SS:[EBP-C],ECX
  00587020    8955 F8         MOV DWORD PTR SS:[EBP-8],EDX
  00587023    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
  00587026    33C0            XOR EAX,EAX
  00587028    55              PUSH EBP
  00587029    68 19715800     PUSH etdirloc.00587119
  0058702E    64:FF30         PUSH DWORD PTR FS:[EAX]
  00587031    64:8920         MOV DWORD PTR FS:[EAX],ESP
  00587034    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  00587037    E8 38D9F8FF     CALL etdirloc.00514974
  0058703C    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  0058703F    E8 E8DBF8FF     CALL etdirloc.00514C2C
  00587044    85C0            TEST EAX,EAX
  00587046    0F84 B2000000   JE etdirloc.005870FE
  0058704C    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  0058704F    E8 D8DBF8FF     CALL etdirloc.00514C2C
  00587054    85C0            TEST EAX,EAX
  00587056    0F84 A2000000   JE etdirloc.005870FE
  0058705C    8D45 E4         LEA EAX,DWORD PTR SS:[EBP-1C]
  0058705F    E8 10D9F8FF     CALL etdirloc.00514974
  00587064    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  00587067    E8 C0DBF8FF     CALL etdirloc.00514C2C
  0058706C    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
  0058706F    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  00587072    E8 B5DBF8FF     CALL etdirloc.00514C2C
  00587077    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
  0058707A    BF 01000000     MOV EDI,1                                ; EDX置1
  0058707F    BB 01000000     MOV EBX,1                                ; EBX置1
  00587084    C745 F0 0100000>MOV DWORD PTR SS:[EBP-10],1              ; SS:[EBP-10]置1
  0058708B    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 求出注册码,循环开始~~~
  0058708E    0FB64438 FF     MOVZX EAX,BYTE PTR DS:[EAX+EDI-1]        ; 机器码ASCII码逐位放入EAX~
  00587093    2B45 F0         SUB EAX,DWORD PTR SS:[EBP-10]            ; 减去 SS:[EBP-10]中的值
  00587096    03C7            ADD EAX,EDI                              ; 加上EDI
  00587098    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]
  0058709B    0FB6541A FF     MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]        ; 用户名ASCII码逐位放入EDX~
  005870A0    33C2            XOR EAX,EDX                              ; 上面两个数异或运算~
  005870A2    03C3            ADD EAX,EBX                              ; 上面得到的值加上EBX~
  005870A4    99              CDQ                                      ; 扩展指令
  005870A5    33C2            XOR EAX,EDX
  005870A7    2BC2            SUB EAX,EDX
  005870A9    8BF0            MOV ESI,EAX
  005870AB    8BC6            MOV EAX,ESI
  005870AD    B9 24000000     MOV ECX,24                               ; ECX的值为24
  005870B2    99              CDQ                                      ; 扩展指令
  005870B3    F7F9            IDIV ECX                                 ; EAX中的值除以24,余数放在EDX中~
  005870B5    8BF2            MOV ESI,EDX                              ; EDX中的值放在ESI中~
  005870B7    8D45 E0         LEA EAX,DWORD PTR SS:[EBP-20]            ; 找到内存对应的表中相应的值,把这些值连接起来就是真码~
  005870BA    8A96 90B75A00   MOV DL,BYTE PTR DS:[ESI+5AB790]
  005870C0    E8 8FDAF8FF     CALL etdirloc.00514B54
  005870C5    8B55 E0         MOV EDX,DWORD PTR SS:[EBP-20]
  005870C8    8D45 E4         LEA EAX,DWORD PTR SS:[EBP-1C]
  005870CB    E8 64DBF8FF     CALL etdirloc.00514C34
  005870D0    3B7D EC         CMP EDI,DWORD PTR SS:[EBP-14]            ; EDI中的值和机器码位数比较~
  005870D3    7D 03           JGE SHORT etdirloc.005870D8
  005870D5    47              INC EDI
  005870D6    EB 05           JMP SHORT etdirloc.005870DD
  005870D8    BB 01000000     MOV EBX,1
  005870DD    3B5D E8         CMP EBX,DWORD PTR SS:[EBP-18]            ; EBX中的值和用户名位数比~
  005870E0    7D 03           JGE SHORT etdirloc.005870E5
  005870E2    43              INC EBX
  005870E3    EB 05           JMP SHORT etdirloc.005870EA
  005870E5    BB 01000000     MOV EBX,1
  005870EA    FF45 F0         INC DWORD PTR SS:[EBP-10]                ; SS:[EBP-10]中的值加1
  005870ED    837D F0 15      CMP DWORD PTR SS:[EBP-10],15             ; SS:[EBP-10]的值和15h比较,控制循环次数
  005870F1  ^ 75 98           JNZ SHORT etdirloc.0058708B              ; 循环结束~~
  005870F3    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  005870F6    8B55 E4         MOV EDX,DWORD PTR SS:[EBP-1C]
  005870F9    E8 CAD8F8FF     CALL etdirloc.005149C8
  005870FE    33C0            XOR EAX,EAX
  00587100    5A              POP EDX
  
--------------------------------------------------------------------------------
【经验总结】
  机器码的算法小结:
  逐位取机器码的ASCII码除以12,余数与相应的循环次数逻辑异或运算,结果转换为十进制连接起来就是机器码。
  
下面总结下上面的关键循环:
  分两种情况:
  一,当用户名位数小于机器码位数时:
   当循环次数不大于用户名位数时,是机器码ASCII码与用户名ASCII码异或运算后的值加上循环次数,然后除以24得到的余
  数在内存表中对应的值,
   当循环次数大于用户名位数小于机器码位数时,是机器码ASCII码与用户名ASCII码异或运算后的值从1开始加起,得到的值
  除以24得到的余数在内存表中对应的值
   当循环次数大于机器码位数是,是机器码最后一位ASCII码减去循环次数,加上机器码位数后的值,与用户名第二位逻辑异
  或运算,的到的值加上2,然后除以24得到的余数在内存表中对应的值。
  把上面得到的值连接起来就是真码~
  二。当用户名位数大于机器码位数时:
  当循环次数不大于用机器码数时,是机器码ASCII码与用户名ASCII码异或运算后的值加上循环次数,然后除以24得到的余数
  在内存表中对应的值,
  当循环次数大于机器码位数是,是机器码最后一位ASCII码减去循环次数,加上机器码位数后的值,与用户名第二位逻辑异
  或运算,的到的值加上2,然后除以24得到的余数在内存表中对应的值。
  把上面得到的值连接起来就是真码~
  那张内存表见附件。
  
  偶的语言表达能力有限,看不太懂的朋友请自己跟下啊~~
  
--------------------------------------------------------------------------------
【版权声明】: 菜鸟初学算法, 失误之处敬请诸位大侠赐教,转载请注明作者并保持文章的完整, 谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

发表于 2006-10-13 20:17:15 | 显示全部楼层
膜拜。。。:lol:
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表