首页
社区
课程
招聘
[旧帖] [原创]flashcii之算法分析 0.00雪花
发表于: 2007-5-19 08:05 9478

[旧帖] [原创]flashcii之算法分析 0.00雪花

2007-5-19 08:05
9478
[前言]最近在坛子上看有人讨论flashcii的爆破,凑凑热闹^-^
[名称]flashcii
[功能]国外软件,图片转为字符画可以输出为swf.
[下载地址]http://www.flashcii.com/flashcii_mai...9200_setup.exe
[注册方式]用户名+注册码
[加壳类型]无壳
[使用工具]peid0.93,Ollyice
[声明]为练习之用,不得用于非法用途, ,欢迎讨论!!

首先试运行,无出错提示.

Ollyice载入,查找字串,哈哈,天无绝人之路啊,居然有(ASCII "Registration Successful!",LF,"Thank you for supporting the development of Flashcii.")

狂喜中....... 

双击来到这里.....
0047C700   > \6A FF         push    -1
0047C702   .  68 96845300   push    Flashcii.00538496                ;  SE 处理程序安装
0047C707   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
0047C70D   .  50            push    eax
0047C70E   .  64:8925 00000>mov     dword ptr fs:[0], esp
0047C715   .  81EC 8C000000 sub     esp, 8C
0047C71B   .  53            push    ebx
0047C71C   .  56            push    esi
0047C71D   .  57            push    edi
0047C71E   .  8BF1          mov     esi, ecx
0047C720   .  E8 6D2D0900   call    <jmp.&MFC71.#1084_AfxGetModuleSt>
0047C725   .  8B40 04       mov     eax, dword ptr [eax+4]
0047C728   .  68 B3F85300   push    Flashcii.0053F8B3
0047C72D   .  68 A44D5400   push    Flashcii.00544DA4                ;  ASCII "userName"
0047C732   .  68 944D5400   push    Flashcii.00544D94                ;  ASCII "User Details"
0047C737   .  8D4C24 18     lea     ecx, dword ptr [esp+18]
0047C73B   .  51            push    ecx
0047C73C   .  8BC8          mov     ecx, eax
0047C73E   .  E8 0B340900   call    <jmp.&MFC71.#3110_CWinApp::GetPr>
0047C743   .  C78424 A00000>mov     dword ptr [esp+A0], 0
0047C74E   .  E8 3F2D0900   call    <jmp.&MFC71.#1084_AfxGetModuleSt>
0047C753   .  8B40 04       mov     eax, dword ptr [eax+4]
0047C756   .  68 B3F85300   push    Flashcii.0053F8B3
0047C75B   .  68 28695400   push    Flashcii.00546928                ;  ASCII "userKey"
0047C760   .  68 944D5400   push    Flashcii.00544D94                ;  ASCII "User Details"
0047C765   .  8D5424 1C     lea     edx, dword ptr [esp+1C]
0047C769   .  52            push    edx
0047C76A   .  8BC8          mov     ecx, eax
0047C76C   .  E8 DD330900   call    <jmp.&MFC71.#3110_CWinApp::GetPr>
0047C771   .  51            push    ecx
0047C772   .  8D4424 14     lea     eax, dword ptr [esp+14]
0047C776   .  8BCC          mov     ecx, esp
0047C778   .  896424 18     mov     dword ptr [esp+18], esp
0047C77C   .  BB 01000000   mov     ebx, 1
0047C781   .  50            push    eax
0047C782   .  889C24 A80000>mov     byte ptr [esp+A8], bl
0047C789   .  FF15 7C4B5900 call    near dword ptr [<&MFC71.#297_ATL>;  MFC71.7C14E575
0047C78F   .  51            push    ecx
0047C790   .  8D5424 14     lea     edx, dword ptr [esp+14]
0047C794   .  8BCC          mov     ecx, esp
0047C796   .  896424 20     mov     dword ptr [esp+20], esp
0047C79A   .  52            push    edx
0047C79B   .  C68424 AC0000>mov     byte ptr [esp+AC], 2
0047C7A3   .  FF15 7C4B5900 call    near dword ptr [<&MFC71.#297_ATL>;  MFC71.7C14E575
0047C7A9   .  8BCE          mov     ecx, esi
0047C7AB   .  889C24 A80000>mov     byte ptr [esp+A8], bl
0047C7B2   .  E8 547EF8FF   call    Flashcii.0040460B
0047C7B7   .  85C0          test    eax, eax
0047C7B9   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047C7BD   .  6A 00         push    0
0047C7BF   .  74 3B         je      short Flashcii.0047C7FC
0047C7C1   .  E8 9E7FF8FF   call    Flashcii.00404764
0047C7C6   .  8D4424 0C     lea     eax, dword ptr [esp+C]
0047C7CA   .  50            push    eax
0047C7CB   .  8D8C24 940000>lea     ecx, dword ptr [esp+94]
0047C7D2   .  C68424 A40000>mov     byte ptr [esp+A4], 3
0047C7DA   .  FF15 004C5900 call    near dword ptr [<&MFC71.#781_ATL>;  MFC71.7C150F15
0047C7E0   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047C7E4   .  E8 BF300900   call    <jmp.&MFC71.#2020_CDialog::DoMod>
0047C7E9   .  889C24 A00000>mov     byte ptr [esp+A0], bl
0047C7F0   .  8D8C24 900000>lea     ecx, dword ptr [esp+90]
0047C7F7   .  E9 06010000   jmp     Flashcii.0047C902
0047C7FC   >  E8 0B4BF8FF   call    Flashcii.0040130C
0047C801   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047C805   .  C68424 A00000>mov     byte ptr [esp+A0], 4
0047C80D   .  E8 96300900   call    <jmp.&MFC71.#2020_CDialog::DoMod>;  显示输入窗口
0047C812   .  3BC3          cmp     eax, ebx
0047C814   .  0F85 CD000000 jnz     Flashcii.0047C8E7
0047C81A   .  51            push    ecx
0047C81B   .  8D9424 980000>lea     edx, dword ptr [esp+98]
0047C822   .  8BCC          mov     ecx, esp
0047C824   .  896424 1C     mov     dword ptr [esp+1C], esp
0047C828   .  52            push    edx
0047C829   .  FF15 7C4B5900 call    near dword ptr [<&MFC71.#297_ATL>;  MFC71.7C14E575
0047C82F   .  51            push    ecx
0047C830   .  8D8424 980000>lea     eax, dword ptr [esp+98]
0047C837   .  8BCC          mov     ecx, esp
0047C839   .  896424 1C     mov     dword ptr [esp+1C], esp
0047C83D   .  50            push    eax
0047C83E   .  C68424 AC0000>mov     byte ptr [esp+AC], 5
0047C846   .  FF15 7C4B5900 call    near dword ptr [<&MFC71.#297_ATL>;  MFC71.7C14E575
0047C84C   .  8BCE          mov     ecx, esi
0047C84E   .  C68424 A80000>mov     byte ptr [esp+A8], 4
0047C856   .  E8 B07DF8FF   call    Flashcii.0040460B                ;  关键CALL
0047C85B   .  85C0          test    eax, eax
0047C85D   .  0F84 84000000 je      Flashcii.0047C8E7                ;  关键跳转
0047C863   .  E8 2A2C0900   call    <jmp.&MFC71.#1084_AfxGetModuleSt>
0047C868   .  8B78 04       mov     edi, dword ptr [eax+4]
0047C86B   .  8D8C24 900000>lea     ecx, dword ptr [esp+90]
0047C872   .  FF15 744B5900 call    near dword ptr [<&MFC71.#876_ATL>;  MFC71.7C158BCD
0047C878   .  50            push    eax                              ;  压入用户名
0047C879   .  68 A44D5400   push    Flashcii.00544DA4                ;  ASCII "userName"
0047C87E   .  68 944D5400   push    Flashcii.00544D94                ;  ASCII "User Details"
0047C883   .  8BCF          mov     ecx, edi
0047C885   .  E8 DA310900   call    <jmp.&MFC71.#6306_CWinApp::Write>
0047C88A   .  E8 032C0900   call    <jmp.&MFC71.#1084_AfxGetModuleSt>
0047C88F   .  8B78 04       mov     edi, dword ptr [eax+4]
0047C892   .  8D8C24 940000>lea     ecx, dword ptr [esp+94]
0047C899   .  FF15 744B5900 call    near dword ptr [<&MFC71.#876_ATL>;  MFC71.7C158BCD
0047C89F   .  50            push    eax                              ;  压入假注册码
0047C8A0   .  68 28695400   push    Flashcii.00546928                ;  ASCII "userKey"
0047C8A5   .  68 944D5400   push    Flashcii.00544D94                ;  ASCII "User Details"
0047C8AA   .  8BCF          mov     ecx, edi
0047C8AC   .  E8 B3310900   call    <jmp.&MFC71.#6306_CWinApp::Write>
0047C8B1   .  8D8C24 900000>lea     ecx, dword ptr [esp+90]
0047C8B8   .  51            push    ecx
0047C8B9   .  8D8E 1C020000 lea     ecx, dword ptr [esi+21C]
0047C8BF   .  FF15 004C5900 call    near dword ptr [<&MFC71.#781_ATL>;  MFC71.7C150F15
0047C8C5   .  8D9424 940000>lea     edx, dword ptr [esp+94]
0047C8CC   .  52            push    edx
0047C8CD   .  8D8E 18020000 lea     ecx, dword ptr [esi+218]
0047C8D3   .  FF15 004C5900 call    near dword ptr [<&MFC71.#781_ATL>;  MFC71.7C150F15
0047C8D9   .  6A 00         push    0
0047C8DB   .  6A 40         push    40
0047C8DD   .  68 C8685400   push    Flashcii.005468C8                ;  ASCII "Registration Successful!",LF,"Thank you for supporting the development of Flashcii."
0047C8E2   .  E8 AB330900   call    <jmp.&MFC71.#1123_AfxMessageBox>
0047C8E7   >  8D8C24 940000>lea     ecx, dword ptr [esp+94]
0047C8EE   .  889C24 A00000>mov     byte ptr [esp+A0], bl
0047C8F5   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047C8FB   .  8D8C24 900000>lea     ecx, dword ptr [esp+90]
0047C902   >  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047C908   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047C90C   .  E8 C92B0900   call    <jmp.&MFC71.#605_CDialog::~CDial>
0047C911   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
0047C915   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047C91B   .  8D4C24 0C     lea     ecx, dword ptr [esp+C]
0047C91F   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047C925   .  8B8C24 980000>mov     ecx, dword ptr [esp+98]
0047C92C   .  5F            pop     edi
0047C92D   .  5E            pop     esi
0047C92E   .  64:890D 00000>mov     dword ptr fs:[0], ecx
0047C935   .  5B            pop     ebx
0047C936   .  81C4 98000000 add     esp, 98
0047C93C   .  C3            retn

在此处了->
0047C8DD   .  68 C8685400   push    Flashcii.005468C8                ;  ASCII "Registration Successful!",LF,"Thank you for supporting the development of Flashcii."

向上翻翻找最近的跳转,设断,User输入 wzq, key输入78787878,动态分析之,结果如上.

0047C856   .  E8 B07DF8FF   call    Flashcii.0040460B                ;  关键CALL

追算法嘛,要跟进去看看!!

未完,待续..............

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像 没有 人感兴趣啊

自己 顶一个
2007-5-19 12:53
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
3
等你续后再up`

现在根本没涉及到算法哦!!!再加油``
那个call跟进吧`
2007-5-19 14:47
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这两天加班了,每时间续,惨啊!!!
继续......
跟进CALL中...........
0047C856   .  E8 B07DF8FF   call    Flashcii.0040460B:::::

0047BA50   > \6A FF         push    -1
0047BA52   .  68 6D835300   push    Flashcii.0053836D                ;  SE 处理程序安装
0047BA57   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
0047BA5D   .  50            push    eax
0047BA5E   .  64:8925 00000>mov     dword ptr fs:[0], esp
0047BA65   .  81EC D0040000 sub     esp, 4D0
0047BA6B   .  A1 B0005900   mov     eax, dword ptr [5900B0]
0047BA70   .  898424 CC0400>mov     dword ptr [esp+4CC], eax
0047BA77   .  8D8C24 E40400>lea     ecx, dword ptr [esp+4E4]
0047BA7E   .  C78424 D80400>mov     dword ptr [esp+4D8], 1
0047BA89   .  FF15 9C4B5900 call    near dword ptr [<&MFC71.#2902>]  ;  MFC71.7C146AB0
0047BA8F   .  83F8 1C       cmp     eax, 1C                          ;  注册码长度=28?
0047BA92   .  8D8C24 E00400>lea     ecx, dword ptr [esp+4E0]
0047BA99   .  0F85 54010000 jnz     Flashcii.0047BBF3
0047BA9F   .  53            push    ebx
0047BAA0   .  56            push    esi
0047BAA1   .  32DB          xor     bl, bl
0047BAA3   .  57            push    edi

原来注册码要28位,重新输入注册信息.user:wzq  id:1232425262728292021232425262

0047BA50   > \6A FF         push    -1
0047BA52   .  68 6D835300   push    Flashcii.0053836D                ;  SE 处理程序安装
0047BA57   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
0047BA5D   .  50            push    eax
0047BA5E   .  64:8925 00000>mov     dword ptr fs:[0], esp
0047BA65   .  81EC D0040000 sub     esp, 4D0
0047BA6B   .  A1 B0005900   mov     eax, dword ptr [5900B0]
0047BA70   .  898424 CC0400>mov     dword ptr [esp+4CC], eax
0047BA77   .  8D8C24 E40400>lea     ecx, dword ptr [esp+4E4]
0047BA7E   .  C78424 D80400>mov     dword ptr [esp+4D8], 1
0047BA89   .  FF15 9C4B5900 call    near dword ptr [<&MFC71.#2902_AT>;  取注册码长度
0047BA8F   .  83F8 1C       cmp     eax, 1C                          ;  注册码长度=28?
0047BA92   .  8D8C24 E00400>lea     ecx, dword ptr [esp+4E0]
0047BA99   .  0F85 54010000 jnz     Flashcii.0047BBF3                ;  不是28位则跳
0047BA9F   .  53            push    ebx
0047BAA0   .  56            push    esi
0047BAA1   .  32DB          xor     bl, bl
0047BAA3   .  57            push    edi
0047BAA4   .  885C24 0F     mov     byte ptr [esp+F], bl
0047BAA8   .  33F6          xor     esi, esi
0047BAAA   .  FF15 9C4B5900 call    near dword ptr [<&MFC71.#2902_AT>;  取用户名长度
0047BAB0   .  85C0          test    eax, eax                         ;  测试用户名长度
0047BAB2   .  7E 32         jle     short Flashcii.0047BAE6
0047BAB4   .  EB 0A         jmp     short Flashcii.0047BAC0
0047BAB6   .  8DA424 000000>lea     esp, dword ptr [esp]
0047BABD   .  8D49 00       lea     ecx, dword ptr [ecx]
0047BAC0   >  56            push    esi
0047BAC1   .  8D8C24 F00400>lea     ecx, dword ptr [esp+4F0]
0047BAC8   .  FF15 0C405900 call    near dword ptr [<&MFC71.#2451_AT>;  MFC71.7C1894E7
0047BACE   .  02D8          add     bl, al                           ;  用户名逐个相加
0047BAD0   .  8D8C24 EC0400>lea     ecx, dword ptr [esp+4EC]
0047BAD7   .  46            inc     esi
0047BAD8   .  FF15 9C4B5900 call    near dword ptr [<&MFC71.#2902_AT>;  MFC71.7C146AB0
0047BADE   .  3BF0          cmp     esi, eax
0047BAE0   .^ 7C DE         jl      short Flashcii.0047BAC0
0047BAE2   .  885C24 0F     mov     byte ptr [esp+F], bl             ;  用户名的累加和放入0012F5C7中
0047BAE6   >  A1 68685400   mov     eax, dword ptr [546868]
0047BAEB   .  8B0D 6C685400 mov     ecx, dword ptr [54686C]
0047BAF1   .  8B15 70685400 mov     edx, dword ptr [546870]
0047BAF7   .  894424 10     mov     dword ptr [esp+10], eax
0047BAFB   .  66:A1 7468540>mov     ax, word ptr [546874]
0047BB01   .  894C24 14     mov     dword ptr [esp+14], ecx
0047BB05   .  8A0D 76685400 mov     cl, byte ptr [546876]
0047BB0B   .  895424 18     mov     dword ptr [esp+18], edx
0047BB0F   .  66:894424 1C  mov     word ptr [esp+1C], ax
0047BB14   .  884C24 1E     mov     byte ptr [esp+1E], cl
0047BB18   .  33F6          xor     esi, esi
0047BB1A   .  8D9B 00000000 lea     ebx, dword ptr [ebx]
0047BB20   >  8D3C36        lea     edi, dword ptr [esi+esi]         ;  此处开始循环
0047BB23   .  8D57 01       lea     edx, dword ptr [edi+1]
0047BB26   .  52            push    edx
0047BB27   .  8D8C24 F40400>lea     ecx, dword ptr [esp+4F4]
0047BB2E   .  FF15 BC425900 call    near dword ptr [<&MFC71.#865_ATL>;  MFC71.7C1894E7
0047BB34   .  57            push    edi
0047BB35   .  8D8C24 F40400>lea     ecx, dword ptr [esp+4F4]
0047BB3C   .  8AD8          mov     bl, al                           ;  从第2位开始间隔取出假注册码进行计算
0047BB3E   .  FF15 BC425900 call    near dword ptr [<&MFC71.#865_ATL>;  MFC71.7C1894E7
0047BB44   .  8A5424 0F     mov     dl, byte ptr [esp+F]             ;  堆栈 ss:[0012F5C7]=62
0047BB48   .  FEC8          dec     al
0047BB4A   .  C0E0 04       shl     al, 4
0047BB4D   .  2C 41         sub     al, 41
0047BB4F   .  02D8          add     bl, al
0047BB51   .  2ADA          sub     bl, dl
0047BB53   .  885C34 10     mov     byte ptr [esp+esi+10], bl        ;  逐个存下计算结果 0012F5C8
0047BB57   .  46            inc     esi
0047BB58   .  83FE 0E       cmp     esi, 0E
0047BB5B   .^ 7C C3         jl      short Flashcii.0047BB20
0047BB5D   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0047BB61   .  E8 6994F8FF   call    Flashcii.00404FCF                ;  对地址0012F5D8赋值:01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10 F0 E1 D2 C3
0047BB66   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0047BB6A   .  C68424 E40400>mov     byte ptr [esp+4E4], 2
0047BB72   .  C68424 D80000>mov     byte ptr [esp+D8], 0
0047BB7A   .  E8 65ACF8FF   call    Flashcii.004067E4
0047BB7F   .  5F            pop     edi
0047BB80   .  8D4424 0C     lea     eax, dword ptr [esp+C]
0047BB84   .  5E            pop     esi
0047BB85   .  8D50 01       lea     edx, dword ptr [eax+1]
0047BB88   .  5B            pop     ebx
0047BB89   .  8DA424 000000>lea     esp, dword ptr [esp]
0047BB90   >  8A08          mov     cl, byte ptr [eax]               ;  对刚才计算结果测试长度
0047BB92   .  40            inc     eax
0047BB93   .  84C9          test    cl, cl
0047BB95   .^ 75 F9         jnz     short Flashcii.0047BB90
0047BB97   .  2BC2          sub     eax, edx
0047BB99   .  50            push    eax
0047BB9A   .  8D4424 08     lea     eax, dword ptr [esp+8]           ;  计算结果的起始地址0012F5C8
0047BB9E   .  50            push    eax
0047BB9F   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]          ;  地址0012F5D8
0047BBA3   .  E8 529BF8FF   call    Flashcii.004056FA
0047BBA8   .  8D4C24 14     lea     ecx, dword ptr [esp+14]          ;  堆栈地址=0012F5D8
0047BBAC   .  E8 E167F8FF   call    Flashcii.00402392                ;  此处对0012F638处写入变换结果
0047BBB1   .  6A 00         push    0
0047BBB3   .  8D8C24 D00000>lea     ecx, dword ptr [esp+D0]
0047BBBA   .  51            push    ecx                              ;  压入内存地址0012F690
0047BBBB   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]          ;  内存地址0012F5D8
0047BBBF   .  E8 9C7BF8FF   call    Flashcii.00403760
0047BBC4   .  68 20685400   push    Flashcii.00546820                ; /String2 = "42 30 1E 22 20 34 8B CF D9 38 C0 14 10 68 E4 FA DC FF EF 97"
0047BBC9   .  8D9424 D00000>lea     edx, dword ptr [esp+D0]          ; |0012F690
0047BBD0   .  52            push    edx                              ; |String1
0047BBD1   .  FF15 203F5900 call    near dword ptr [<&KERNEL32.lstrc>; \lstrcmpA
0047BBD7   .  85C0          test    eax, eax
0047BBD9   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
0047BBDD   .  C68424 D80400>mov     byte ptr [esp+4D8], 1
0047BBE5      74 23         je      short Flashcii.0047BC0A          ;  关键跳转
0047BBE7   .  E8 F865F8FF   call    Flashcii.004021E4
0047BBEC   .  8D8C24 E00400>lea     ecx, dword ptr [esp+4E0]
0047BBF3   >  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047BBF9   .  8D8C24 E40400>lea     ecx, dword ptr [esp+4E4]
0047BC00   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047BC06   .  33C0          xor     eax, eax
0047BC08   .  EB 24         jmp     short Flashcii.0047BC2E
0047BC0A   >  E8 D565F8FF   call    Flashcii.004021E4
0047BC0F   .  8D8C24 E00400>lea     ecx, dword ptr [esp+4E0]
0047BC16   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047BC1C   .  8D8C24 E40400>lea     ecx, dword ptr [esp+4E4]
0047BC23   .  FF15 A04B5900 call    near dword ptr [<&MFC71.#578_ATL>;  MFC71.7C1771B1
0047BC29   .  B8 01000000   mov     eax, 1
0047BC2E   >  8B8C24 D00400>mov     ecx, dword ptr [esp+4D0]
0047BC35   .  64:890D 00000>mov     dword ptr fs:[0], ecx
0047BC3C   .  8B8C24 CC0400>mov     ecx, dword ptr [esp+4CC]
0047BC43   .  E8 E6530900   call    Flashcii.0051102E
0047BC48   .  81C4 DC040000 add     esp, 4DC
0047BC4E   .  C2 0800       retn    8

注意这里:
0047BBB1   .  6A 00         push    0
0047BBB3   .  8D8C24 D00000>lea     ecx, dword ptr [esp+D0]
0047BBBA   .  51            push    ecx                              ;  压入内存地址0012F690
0047BBBB   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047BBBF   .  E8 9C7BF8FF   call    Flashcii.00403760                ;把0012f638处的数据当作字符搬到0012F690
0047BBC4   .  68 20685400   push    Flashcii.00546820                ; /String2 = "42 30 1E 22 20 34 8B CF D9 38 C0 14 10 68 E4 FA DC FF EF 97"
0047BBC9   .  8D9424 D00000>lea     edx, dword ptr [esp+D0]          ; |0012F690
0047BBD0   .  52            push    edx                              ; |String1
0047BBD1   .  FF15 203F5900 call    near dword ptr [<&KERNEL32.lstrc>; \lstrcmpA
0047BBD7   .  85C0          test    eax, eax
0047BBD9   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
0047BBDD   .  C68424 D80400>mov     byte ptr [esp+4D8], 1
0047BBE5   .  74 23         je      short Flashcii.0047BC0A          ;  关键跳转
用0012F690处的数值同固定值比较,需要看看0012F690的数怎么来地.......
在这里0047BBBF   .  E8 9C7BF8FF   call    Flashcii.00403760
内容如下:
00486290   > \83EC 0C       sub     esp, 0C
00486293   .  A1 B0005900   mov     eax, dword ptr [5900B0]
00486298   .  53            push    ebx
00486299   .  55            push    ebp
0048629A   .  894424 10     mov     dword ptr [esp+10], eax
0048629E   .  8A4424 1C     mov     al, byte ptr [esp+1C]
004862A2   .  84C0          test    al, al
004862A4   .  56            push    esi
004862A5   .  57            push    edi
004862A6   .  8BD9          mov     ebx, ecx
004862A8   .  0F85 AF000000 jnz     Flashcii.0048635D
004862AE   .  0FB643 60     movzx   eax, byte ptr [ebx+60]
004862B2   .  50            push    eax                              ; /<%02X>
004862B3   .  8D4C24 14     lea     ecx, dword ptr [esp+14]          ; |
004862B7   .  68 90835400   push    Flashcii.00548390                ; |format = "%02X"
004862BC   .  51            push    ecx                              ; |s
004862BD   .  FF15 50525900 call    near dword ptr [<&MSVCR71.sprint>; \sprintf
004862C3   .  8D4424 1C     lea     eax, dword ptr [esp+1C]
004862C7   .  83C4 0C       add     esp, 0C
004862CA   .  8BC8          mov     ecx, eax
004862CC   .  8D6424 00     lea     esp, dword ptr [esp]
004862D0   >  8A10          mov     dl, byte ptr [eax]
004862D2   .  40            inc     eax
004862D3   .  84D2          test    dl, dl
004862D5   .^ 75 F9         jnz     short Flashcii.004862D0
004862D7   .  8B7C24 20     mov     edi, dword ptr [esp+20]
004862DB   .  2BC1          sub     eax, ecx
004862DD   .  8BF1          mov     esi, ecx
004862DF   .  4F            dec     edi
004862E0   >  8A4F 01       mov     cl, byte ptr [edi+1]
004862E3   .  47            inc     edi
004862E4   .  84C9          test    cl, cl
004862E6   .^ 75 F8         jnz     short Flashcii.004862E0
004862E8   .  8BC8          mov     ecx, eax
004862EA   .  C1E9 02       shr     ecx, 2
004862ED   .  F3:A5         rep     movs dword ptr es:[edi], dword p>
004862EF   .  8BC8          mov     ecx, eax
004862F1   .  83E1 03       and     ecx, 3
004862F4   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
004862F6   .  83C3 61       add     ebx, 61
004862F9   .  BD 13000000   mov     ebp, 13
004862FE   .  8BFF          mov     edi, edi
00486300   >  0FB613        movzx   edx, byte ptr [ebx]
00486303   .  52            push    edx                              ; /<%02X>
00486304   .  8D4424 14     lea     eax, dword ptr [esp+14]          ; |
00486308   .  68 88835400   push    Flashcii.00548388                ; |format = " %02X"
0048630D   .  50            push    eax                              ; |s
0048630E   .  FF15 50525900 call    near dword ptr [<&MSVCR71.sprint>; \sprintf
00486314   .  8D4424 1C     lea     eax, dword ptr [esp+1C]
00486318   .  83C4 0C       add     esp, 0C
0048631B   .  8BC8          mov     ecx, eax
0048631D   .  8D49 00       lea     ecx, dword ptr [ecx]
00486320   >  8A10          mov     dl, byte ptr [eax]
00486322   .  40            inc     eax
00486323   .  84D2          test    dl, dl
00486325   .^ 75 F9         jnz     short Flashcii.00486320
00486327   .  8B7C24 20     mov     edi, dword ptr [esp+20]
0048632B   .  2BC1          sub     eax, ecx
0048632D   .  8BF1          mov     esi, ecx
0048632F   .  4F            dec     edi
00486330   >  8A4F 01       mov     cl, byte ptr [edi+1]
00486333   .  47            inc     edi
00486334   .  84C9          test    cl, cl
00486336   .^ 75 F8         jnz     short Flashcii.00486330
00486338   .  8BC8          mov     ecx, eax
0048633A   .  C1E9 02       shr     ecx, 2
0048633D   .  F3:A5         rep     movs dword ptr es:[edi], dword p>;  此处修改0012F690处数值
0048633F   .  8BC8          mov     ecx, eax
00486341   .  83E1 03       and     ecx, 3
00486344   .  43            inc     ebx
00486345   .  4D            dec     ebp
00486346   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
00486348   .^ 75 B6         jnz     short Flashcii.00486300
0048634A   .  5F            pop     edi
0048634B   .  5E            pop     esi
0048634C   .  5D            pop     ebp
0048634D   .  5B            pop     ebx
0048634E   .  8B4C24 08     mov     ecx, dword ptr [esp+8]
00486352   .  E8 D7AC0800   call    Flashcii.0051102E
00486357   .  83C4 0C       add     esp, 0C
0048635A   .  C2 0800       retn    8
0048635D   >  3C 01         cmp     al, 1
0048635F   .  0F85 A8000000 jnz     Flashcii.0048640D
00486365   .  0FB64B 60     movzx   ecx, byte ptr [ebx+60]
00486369   .  51            push    ecx                              ; /<%u>
0048636A   .  8D5424 14     lea     edx, dword ptr [esp+14]          ; |
0048636E   .  68 84835400   push    Flashcii.00548384                ; |format = "%u"
00486373   .  52            push    edx                              ; |s
00486374   .  FF15 50525900 call    near dword ptr [<&MSVCR71.sprint>; \sprintf
0048637A   .  8D4424 1C     lea     eax, dword ptr [esp+1C]
0048637E   .  83C4 0C       add     esp, 0C
00486381   .  8BC8          mov     ecx, eax
00486383   >  8A10          mov     dl, byte ptr [eax]
00486385   .  40            inc     eax
00486386   .  84D2          test    dl, dl
00486388   .^ 75 F9         jnz     short Flashcii.00486383
0048638A   .  8B7C24 20     mov     edi, dword ptr [esp+20]
0048638E   .  2BC1          sub     eax, ecx
00486390   .  8BF1          mov     esi, ecx
00486392   .  4F            dec     edi
00486393   >  8A4F 01       mov     cl, byte ptr [edi+1]
00486396   .  47            inc     edi
00486397   .  84C9          test    cl, cl
00486399   .^ 75 F8         jnz     short Flashcii.00486393
0048639B   .  8BC8          mov     ecx, eax
0048639D   .  C1E9 02       shr     ecx, 2
004863A0   .  F3:A5         rep     movs dword ptr es:[edi], dword p>
004863A2   .  8BC8          mov     ecx, eax
004863A4   .  83E1 03       and     ecx, 3
004863A7   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
004863A9   .  83C3 61       add     ebx, 61
004863AC   .  BD 13000000   mov     ebp, 13
004863B1   >  0FB603        movzx   eax, byte ptr [ebx]
004863B4   .  50            push    eax                              ; /<%u>
004863B5   .  8D4C24 14     lea     ecx, dword ptr [esp+14]          ; |
004863B9   .  68 80835400   push    Flashcii.00548380                ; |format = " %u"
004863BE   .  51            push    ecx                              ; |s
004863BF   .  FF15 50525900 call    near dword ptr [<&MSVCR71.sprint>; \sprintf
004863C5   .  8D4424 1C     lea     eax, dword ptr [esp+1C]
004863C9   .  83C4 0C       add     esp, 0C
004863CC   .  8BC8          mov     ecx, eax
004863CE   .  8BFF          mov     edi, edi
004863D0   >  8A10          mov     dl, byte ptr [eax]
004863D2   .  40            inc     eax
004863D3   .  84D2          test    dl, dl
004863D5   .^ 75 F9         jnz     short Flashcii.004863D0
004863D7   .  8B7C24 20     mov     edi, dword ptr [esp+20]
004863DB   .  2BC1          sub     eax, ecx
004863DD   .  8BF1          mov     esi, ecx
004863DF   .  4F            dec     edi
004863E0   >  8A4F 01       mov     cl, byte ptr [edi+1]
004863E3   .  47            inc     edi
004863E4   .  84C9          test    cl, cl
004863E6   .^ 75 F8         jnz     short Flashcii.004863E0
004863E8   .  8BC8          mov     ecx, eax
004863EA   .  C1E9 02       shr     ecx, 2
004863ED   .  F3:A5         rep     movs dword ptr es:[edi], dword p>
004863EF   .  8BC8          mov     ecx, eax
004863F1   .  83E1 03       and     ecx, 3
004863F4   .  43            inc     ebx
004863F5   .  4D            dec     ebp
004863F6   .  F3:A4         rep     movs byte ptr es:[edi], byte ptr>
004863F8   .^ 75 B7         jnz     short Flashcii.004863B1
004863FA   .  5F            pop     edi
004863FB   .  5E            pop     esi
004863FC   .  5D            pop     ebp
004863FD   .  5B            pop     ebx
004863FE   .  8B4C24 08     mov     ecx, dword ptr [esp+8]
00486402   .  E8 27AC0800   call    Flashcii.0051102E
00486407   .  83C4 0C       add     esp, 0C
0048640A   .  C2 0800       retn    8
0048640D   >  8B7C24 20     mov     edi, dword ptr [esp+20]
00486411   .  B9 07000000   mov     ecx, 7
00486416   .  BE 5C835400   mov     esi, Flashcii.0054835C           ;  ASCII "Error: Unknown report type!"
0048641B   .  F3:A5         rep     movs dword ptr es:[edi], dword p>
0048641D   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
00486421   .  5F            pop     edi
00486422   .  5E            pop     esi
00486423   .  5D            pop     ebp
00486424   .  5B            pop     ebx
00486425   .  E8 04AC0800   call    Flashcii.0051102E
0048642A   .  83C4 0C       add     esp, 0C
0048642D   .  C2 0800       retn    8

原来是把把0012f638处的十六进制数据当作字符加空格后搬到0012F690...........

在看看0012f638从那里来............
2007-5-20 21:41
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
写完了么?
等续集

另外很奇怪,我导入的图片无法转ascii,每次一点工作区的图片,图片就没了
2007-5-20 22:30
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
还没完呢,流程已经搞清楚了,但是变换的数据在程序中算来搬去的,代码量很大,正在整理之中,最近加班较忙,时间不足......

楼上啥意思,没看明白!!!
2007-5-20 23:22
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
7
等待续集中,,,,支持楼主!
2007-5-21 12:49
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8


过程如下:

004861DE   .  33C0          xor     eax, eax                         ;  EAX清零,用作计数器
004861E0   >  8BD0          mov     edx, eax                         ;  循环次数送EDX
004861E2   .  83E2 03       and     edx, 3
004861E5   .  B9 03000000   mov     ecx, 3
004861EA   .  2BCA          sub     ecx, edx
004861EC   .  8BD0          mov     edx, eax
004861EE   .  C1EA 02       shr     edx, 2
004861F1   .  8B5496 04     mov     edx, dword ptr [esi+edx*4+4]     ;  自地址0012F5DC开始取
004861F5   .  C1E1 03       shl     ecx, 3
004861F8   .  D3EA          shr     edx, cl
004861FA   .  40            inc     eax
004861FB   .  83F8 14       cmp     eax, 14
004861FE   .  885406 5F     mov     byte ptr [esi+eax+5F], dl        ;  存入0012F638起始的地址
00486202   .^ 72 DC         jb      short Flashcii.004861E0

原来是将自地址0012F5DC开始的字符串每4个一组,作个逆转存入0012F638.

0012F5DC  C3 82 D5 97 E3 8C 6B CB 7C 5C D8 5F 78 DC 5A 59  ??銓k藎\豞x躗Y
0012F5EC  6A 97 C5 EB 00 02 00 00 00 00 00 00 8F AF BF CF  j.烹........彲肯
0012F5FC  DF EF FF 0F 7F 8F AF BF CF DF 80 00 00 00 00 00  唢...彲肯?.....
0012F60C  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012F61C  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012F62C  00 00 00 00 00 00 00 00 00 00 00 70 97 D5 82 C3  ...........p.?
0012F63C  CB 6B 8C E3 5F D8 5C 7C 59 5A DC 78 EB C5 97 6A  薻屻_豛|YZ躼肱.j

仔细看看,C3 82 D5 97 ->97 D5 82 C3  
         E3 8C 6B CB ->CB 6B 8C E3
         7C 5C D8 5F ->5F D8 5C 7C
         78 DC 5A 59 ->59 5A DC 78
         6A 97 C5 EB ->EB C5 97 6A


还得向前看看0012F5DC开始的数据是怎么计算出来的。。。。。。。。。。。。

0012F5DC数据计算的地方已经找到:
004856C2   .  8B80 B4000000 mov     eax, dword ptr [eax+B4]
004856C8   .  0378 3C       add     edi, dword ptr [eax+3C]
004856CB   .  8B5424 14     mov     edx, dword ptr [esp+14]
004856CF   .  8D843A D6C162>lea     eax, dword ptr [edx+edi+CA62C1D6>
004856D6   .  8B39          mov     edi, dword ptr [ecx]             ;  堆栈 ds:[0012F5DC]=67452301
004856D8   .  8B51 04       mov     edx, dword ptr [ecx+4]           ;  堆栈 ds:[0012F5E0]=EFCDAB89
004856DB   .  03F8          add     edi, eax                         ;  edi=97D582C3
004856DD   .  8B4424 28     mov     eax, dword ptr [esp+28]          ;  堆栈 ss:[0012F58C]=DB9DE15A
004856E1   .  03D0          add     edx, eax                         ;  edx=CB6B8CE3
004856E3   .  8B41 10       mov     eax, dword ptr [ecx+10]          ;  堆栈 ds:[0012F5EC]=C3D2E1F0
004856E6   .  8951 04       mov     dword ptr [ecx+4], edx
004856E9   .  8BD3          mov     edx, ebx                         ;  ebx=1C75FDFB
004856EB   .  C1E2 1E       shl     edx, 1E                          ;  edx=C0000000
004856EE   .  C1EB 02       shr     ebx, 2                           ;  ebx=071D7F7E
004856F1   .  0BD3          or      edx, ebx                         ;  edx=C71D7F7E
004856F3   .  8939          mov     dword ptr [ecx], edi             ;  edi=97D582C3
004856F5   .  8B79 08       mov     edi, dword ptr [ecx+8]           ;  堆栈 ds:[0012F5E4]=98BADCFE
004856F8   .  03FA          add     edi, edx                         ;  edx=C71D7F7E
004856FA   .  8B51 0C       mov     edx, dword ptr [ecx+C]           ;  堆栈 ds:[0012F5E8]=10325476
004856FD   .  8979 08       mov     dword ptr [ecx+8], edi
00485700   .  5F            pop     edi
00485701   .  03D6          add     edx, esi                         ;  esi=49288802
00485703   .  5E            pop     esi
00485704   .  03C5          add     eax, ebp                         ;  EDX=595ADC78,ebp=27F2B57A,EAX=C3D2E1F0
00485706   .  5D            pop     ebp                              ;  EAX=EBC5976A
00485707   .  8951 0C       mov     dword ptr [ecx+C], edx           ;  1
0048570A   .  8941 10       mov     dword ptr [ecx+10], eax          ;  2
0048570D   .  5B            pop     ebx
0048570E   .  83C4 10       add     esp, 10
00485711   .  C2 0800       retn    8

关键在于如何取得eax的值,上面大段的代码.估计有1000多行吧,看的头疼,有能力的兄弟一块看看吧,呵呵
2007-5-22 22:49
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
continued..........expected
2007-5-23 00:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
偶特感兴趣,因为这是俺提出讨论的,严重支持 wzqoo兄的研究
2007-5-23 18:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
期待续集……
2007-5-23 18:37
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最近U盘突然坏了,所有的劳动成果要付之东流了..........

狂晕!!!!!!!!

正在全力抢救之中..................
2007-5-25 00:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你可得撑住啊! 精神上无限支持你呀!
2007-5-25 14:27
0
雪    币: 538
活跃值: (485)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
14
这个软件根本就写不出注册机。。。。。
2007-5-25 17:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不会吧?!!
楼上是否已经分析出算法来了,发表一下,供我这等菜鸟学习学习呀!
2007-5-25 22:37
0
雪    币: 538
活跃值: (485)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
16
它最后采用了一个不可逆算法。。。。
等wzqoo兄弟续集。。。。
2007-5-26 08:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
那有没有可能,不注册它,把功能限制去掉呢?就是绕过注册。
2007-5-26 22:21
0
游客
登录 | 注册 方可回帖
返回
//