【文章标题】: 简单破解32bitFTP
【文章作者】: bithaha
【软件名称】: 32bitFTP
【下载地址】: 华军软件
【加壳方式】: 无
【编写语言】: vc7.0
【软件介绍】: 新手找自信软件,看着很cool的软件(英文)
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
又碰到个软柿子,给出解题思路,谁有兴趣可以看一下.
OD载入,输入KEY,断GetDlgItemText或者万能断点均可,然后F8,F7来到如下函数
在这个函数中有些字符过滤,就是cmp x,41H,jnz xxxx 这样的语句,省略了.
004170AD |. 51 PUSH ECX
004170AE |. 52 PUSH EDX
004170AF |. 895C24 24 MOV DWORD PTR SS:[ESP+24],EBX
004170B3 |. C74424 1C 010>MOV DWORD PTR SS:[ESP+1C],1
004170BB |. E8 80010000 CALL 32bitftp.00417240 ; 生成"esp"+18
当用户名是bithaha的时候,生成的值为7F,注意此处的esp+18并不是真正的esp+18,见下面。算法并不难也不是很长
004170C0 |. 8B7C24 28 MOV EDI,DWORD PTR SS:[ESP+28]
004170C4 |. 83C9 FF OR ECX,FFFFFFFF
004170C7 |. 33C0 XOR EAX,EAX
004170C9 |. 83C4 0C ADD ESP,0C ;ESP+=0ch
004170CC |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
004170CE |. F7D1 NOT ECX
004170D0 |. 2BF9 SUB EDI,ECX
004170D2 |. 8BF7 MOV ESI,EDI
004170D4 |. 8BD1 MOV EDX,ECX
004170D6 |. BF A4ED4700 MOV EDI,32bitftp.0047EDA4 ; ASCII "bithaha"
004170DB |. 83C9 FF OR ECX,FFFFFFFF
004170DE |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
004170E0 |. 8BCA MOV ECX,EDX
004170E2 |. 4F DEC EDI
004170E3 |. C1E9 02 SHR ECX,2
004170E6 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
004170E8 |. 8BCA MOV ECX,EDX
004170EA |. 8B5424 18 MOV EDX,DWORD PTR SS:[ESP+18];这个ESP+18
004170EE |. 83E1 03 AND ECX,3
004170F1 |. F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
004170F3 |. 8A0D A4ED4700 MOV CL,BYTE PTR DS:[47EDA4]
004170F9 |. 33F6 XOR ESI,ESI
004170FB |. 3ACB CMP CL,BL
004170FD |. 897424 10 MOV DWORD PTR SS:[ESP+10],ESI
00417101 |. 74 31 JE SHORT 32bitftp.00417134
00417103 |> 8BC1 /MOV EAX,ECX ;循环1,生成的最终结果在EDX中,我这里是6910
算法简单,四则运算
00417105 |. 25 FF000000 |AND EAX,0FF
0041710A |. 8D3CC0 |LEA EDI,DWORD PTR DS:[EAX+EAX*8]
0041710D |. 03C6 |ADD EAX,ESI
0041710F |. 8D0478 |LEA EAX,DWORD PTR DS:[EAX+EDI*2]
00417112 |. 03D0 |ADD EDX,EAX
00417114 |. 80F9 60 |CMP CL,60
00417117 |. 73 05 |JNB SHORT 32bitftp.0041711E
00417119 |. 83C2 15 |ADD EDX,15
0041711C |. EB 03 |JMP SHORT 32bitftp.00417121
0041711E |> 83EA 15 |SUB EDX,15
00417121 |> 8A8E A5ED4700 |MOV CL,BYTE PTR DS:[ESI+47EDA5]
00417127 |. 46 |INC ESI
00417128 |. 3ACB |CMP CL,BL
0041712A |.^ 75 D7 \JNZ SHORT 32bitftp.00417103
0041712C |. 897424 10 MOV DWORD PTR SS:[ESP+10],ESI
00417130 |. 895424 18 MOV DWORD PTR SS:[ESP+18],EDX
00417134 |> B9 80000000 MOV ECX,80
00417139 |. 33C0 XOR EAX,EAX
0041713B |. BF A4EB4700 MOV EDI,32bitftp.0047EBA4 ;
00417140 |. 52 PUSH EDX ;EDX=6910H
00417141 |. 68 6C914600 PUSH 32bitftp.0046916C ; ASCII "%06lu"
00417146 |. 68 A4EB4700 PUSH 32bitftp.0047EBA4 ;
0041714B |. F3:AB REP STOS DWORD PTR ES:[EDI]
0041714D |. E8 E7D50100 CALL 32bitftp.00434739 ;EDX的值换成十进制的字符串"026896"
00417152 |. 8B2D 40424500 MOV EBP,DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; kernel32.lstrlenA
00417158 |. 83C4 0C ADD ESP,0C
0041715B |. B9 00010000 MOV ECX,100
00417160 |. 33C0 XOR EAX,EAX
00417162 |. BF A4ED4700 MOV EDI,32bitftp.0047EDA4 ; ASCII "bithaha"
00417167 |. 68 A4EB4700 PUSH 32bitftp.0047EBA4 ; /
0041716C |. F3:AB REP STOS DWORD PTR ES:[EDI] ; |
0041716E |. 895C24 14 MOV DWORD PTR SS:[ESP+14],EBX ; |
00417172 |. FFD5 CALL EBP ; \lstrlenA
00417174 |. 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
00417178 |. 3BC8 CMP ECX,EAX
0041717A |. 7D 37 JGE SHORT 32bitftp.004171B3
0041717C |> 0FBE91 A4EB47>/MOVSX EDX,BYTE PTR DS:[ECX+47EBA4] ;循环2,这个循环也比较
简单,四则运算
00417183 |. 03D1 |ADD EDX,ECX
00417185 |. 8D044D A4ED47>|LEA EAX,DWORD PTR DS:[ECX*2+47EDA4]
0041718C |. 52 |PUSH EDX
0041718D |. 68 64914600 |PUSH 32bitftp.00469164 ; ASCII "%02X"
00417192 |. 50 |PUSH EAX
00417193 |. E8 A1D50100 |CALL 32bitftp.00434739
00417198 |. 8B7C24 1C |MOV EDI,DWORD PTR SS:[ESP+1C]
0041719C |. 83C4 0C |ADD ESP,0C
0041719F |. 47 |INC EDI
004171A0 |. 68 A4EB4700 |PUSH 32bitftp.0047EBA4 ;
004171A5 |. 897C24 14 |MOV DWORD PTR SS:[ESP+14],EDI
004171A9 |. FFD5 |CALL EBP
004171AB |. 8B4C24 10 |MOV ECX,DWORD PTR SS:[ESP+10]
004171AF |. 3BC8 |CMP ECX,EAX
004171B1 |.^ 7C C9 \JL SHORT 32bitftp.0041717C
004171B3 |> B9 80000000 MOV ECX,80
004171B8 |. B8 20202020 MOV EAX,20202020
004171BD |. BF A4EB4700 MOV EDI,32bitftp.0047EBA4 ;
004171C2 |. 68 A4ED4700 PUSH 32bitftp.0047EDA4 ; ASCII "bithaha"
004171C7 |. F3:AB REP STOS DWORD PTR ES:[EDI]
004171C9 |. 895C24 14 MOV DWORD PTR SS:[ESP+14],EBX
004171CD |. 33FF XOR EDI,EDI
004171CF |. 33F6 XOR ESI,ESI
004171D1 |. FFD5 CALL EBP
004171D3 |. 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
004171D7 |. 3BC8 CMP ECX,EAX
004171D9 |. 7D 2A JGE SHORT 32bitftp.00417205
004171DB |> 83FF 03 /CMP EDI,3 ;循环3,四则运算
004171DE |. 75 03 |JNZ SHORT 32bitftp.004171E3
004171E0 |. 33FF |XOR EDI,EDI
004171E2 |. 46 |INC ESI
004171E3 |> 8A91 A4ED4700 |MOV DL,BYTE PTR DS:[ECX+47EDA4]
004171E9 |. 41 |INC ECX
004171EA |. 8896 A4EB4700 |MOV BYTE PTR DS:[ESI+47EBA4],DL
004171F0 |. 47 |INC EDI
004171F1 |. 68 A4ED4700 |PUSH 32bitftp.0047EDA4 ; ASCII "bithaha"
004171F6 |. 894C24 14 |MOV DWORD PTR SS:[ESP+14],ECX
004171FA |. 46 |INC ESI
004171FB |. FFD5 |CALL EBP
004171FD |. 8B4C24 10 |MOV ECX,DWORD PTR SS:[ESP+10]
00417201 |. 3BC8 |CMP ECX,EAX
00417203 |.^ 7C D6 \JL SHORT 32bitftp.004171DB
00417205 |> BF A4EB4700 MOV EDI,32bitftp.0047EBA4 ; 注册码
0041720A |. 83C9 FF OR ECX,FFFFFFFF
0041720D |. 33C0 XOR EAX,EAX
0041720F |. 889E A4EB4700 MOV BYTE PTR DS:[ESI+47EBA4],BL
00417215 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00417217 |. F7D1 NOT ECX
00417219 |. 2BF9 SUB EDI,ECX
0041721B |. 8BC1 MOV EAX,ECX
0041721D |. 8BF7 MOV ESI,EDI
0041721F |. 8B7C24 20 MOV EDI,DWORD PTR SS:[ESP+20]
00417223 |. C1E9 02 SHR ECX,2
00417226 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
00417228 |. 8BC8 MOV ECX,EAX
0041722A |. 83E1 03 AND ECX,3
0041722D |. F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0041722F |. 5F POP EDI
00417230 |. 5E POP ESI
00417231 |. 5D POP EBP
00417232 |. 5B POP EBX
00417233 |. 59 POP ECX
00417234 \. C3 RETN;//返回后与输入的值比较
没有最简单,只有更简单,祝大家新年快乐!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2008年02月02日 5:04:40
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法