vb小程序浅析

系统 : Windows xp

程序 : BJCM10B

程序下载地址 :http://pan.baidu.com/s/1dFyXe29

要求 : 编写注册机

使用工具 : OD

可在看雪论坛中查找关于此程序的破文:传送门

这个小程序本身算法不难,就是vb的函数调用方式真的太奇葩了,容易看得一头雾水。

直接根据“good job, tell me how you do that!”字串找出关键算法:

00404563   .  FFD3          call    ebx                                       ;  (initial cpu selection); <&MSVBVM60.__vbaObjSet>
00404565   .  8B08          mov     ecx, dword ptr [eax]
00404567   .  8D55 D4       lea     edx, dword ptr [ebp-2C]
0040456A   .  52            push    edx
0040456B   .  50            push    eax
0040456C   .  8985 44FFFFFF mov     dword ptr [ebp-BC], eax
00404572   .  FF91 A0000000 call    dword ptr [ecx+A0]
00404578   .  3BC7          cmp     eax, edi
0040457A   .  DBE2          fclex
0040457C   .  7D 18         jge     short 00404596
0040457E   .  8B8D 44FFFFFF mov     ecx, dword ptr [ebp-BC]
00404584   .  68 A0000000   push    0A0
00404589   .  68 00304000   push    00403000
0040458E   .  51            push    ecx
0040458F   .  50            push    eax
00404590   .  FF15 2C104000 call    dword ptr [<&MSVBVM60.__vbaHresultCheckOb>;  MSVBVM60.__vbaHresultCheckObj
00404596   >  8B55 D4       mov     edx, dword ptr [ebp-2C]                   ;  用户名字符串
00404599   .  52            push    edx                                       ; /String
0040459A   .  FF15 10104000 call    dword ptr [<&MSVBVM60.__vbaLenBstr>]      ; \__vbaLenBstr
004045A0   .  33C9          xor     ecx, ecx
004045A2   .  83F8 02       cmp     eax, 2                                    ;  是否是否不小于2?
004045A5   .  0F9CC1        setl    cl
004045A8   .  F7D9          neg     ecx
004045AA   .  898D 3CFFFFFF mov     dword ptr [ebp-C4], ecx
004045B0   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
004045B3   .  FF15 D0104000 call    dword ptr [<&MSVBVM60.__vbaFreeStr>]      ;  MSVBVM60.__vbaFreeStr
004045B9   .  8D4D CC       lea     ecx, dword ptr [ebp-34]
004045BC   .  FF15 D4104000 call    dword ptr [<&MSVBVM60.__vbaFreeObj>]      ;  MSVBVM60.__vbaFreeObj
004045C2   .  66:39BD 3CFFF>cmp     word ptr [ebp-C4], di
004045C9   .  0F84 8B000000 je      0040465A                                  ;  符合长度直接跳转
004045CF   .  8B1D B0104000 mov     ebx, dword ptr [<&MSVBVM60.__vbaVarDup>]  ;  MSVBVM60.__vbaVarDup
004045D5   .  B9 04000280   mov     ecx, 80020004
004045DA   .  894D 90       mov     dword ptr [ebp-70], ecx
004045DD   .  B8 0A000000   mov     eax, 0A
004045E2   .  894D A0       mov     dword ptr [ebp-60], ecx
004045E5   .  BE 08000000   mov     esi, 8
004045EA   .  8D95 68FFFFFF lea     edx, dword ptr [ebp-98]
004045F0   .  8D4D A8       lea     ecx, dword ptr [ebp-58]
004045F3   .  8945 88       mov     dword ptr [ebp-78], eax
004045F6   .  8945 98       mov     dword ptr [ebp-68], eax
004045F9   .  C785 70FFFFFF>mov     dword ptr [ebp-90], 00403070              ;  you have to enter your name!
00404603   .  89B5 68FFFFFF mov     dword ptr [ebp-98], esi
00404609   .  FFD3          call    ebx                                       ;  <&MSVBVM60.__vbaVarDup>
0040460B   .  8D95 78FFFFFF lea     edx, dword ptr [ebp-88]
00404611   .  8D4D B8       lea     ecx, dword ptr [ebp-48]
00404614   .  C745 80 14304>mov     dword ptr [ebp-80], 00403014              ;  name must be at least two characters long!
0040461B   .  89B5 78FFFFFF mov     dword ptr [ebp-88], esi
00404621   .  FFD3          call    ebx
00404623   .  8D55 88       lea     edx, dword ptr [ebp-78]
00404626   .  8D45 98       lea     eax, dword ptr [ebp-68]
00404629   .  52            push    edx
0040462A   .  8D4D A8       lea     ecx, dword ptr [ebp-58]
0040462D   .  50            push    eax
0040462E   .  51            push    ecx
0040462F   .  8D55 B8       lea     edx, dword ptr [ebp-48]
00404632   .  57            push    edi
00404633   .  52            push    edx
00404634   .  FF15 3C104000 call    dword ptr [<&MSVBVM60.#595>]              ;  MSVBVM60.rtcMsgBox
0040463A   .  8D45 88       lea     eax, dword ptr [ebp-78]
0040463D   .  8D4D 98       lea     ecx, dword ptr [ebp-68]
00404640   .  50            push    eax
00404641   .  8D55 A8       lea     edx, dword ptr [ebp-58]
00404644   .  51            push    ecx
00404645   .  8D45 B8       lea     eax, dword ptr [ebp-48]
00404648   .  52            push    edx
00404649   .  50            push    eax
0040464A   .  6A 04         push    4
0040464C   .  FF15 14104000 call    dword ptr [<&MSVBVM60.__vbaFreeVarList>]  ;  MSVBVM60.__vbaFreeVarList
00404652   .  83C4 14       add     esp, 14
00404655   .  E9 D4030000   jmp     00404A2E
0040465A   >  8B0E          mov     ecx, dword ptr [esi]
0040465C   .  56            push    esi
0040465D   .  FF91 0C030000 call    dword ptr [ecx+30C]
00404663   .  8D55 CC       lea     edx, dword ptr [ebp-34]
00404666   .  50            push    eax
00404667   .  52            push    edx
00404668   .  FFD3          call    ebx
0040466A   .  8B06          mov     eax, dword ptr [esi]
0040466C   .  56            push    esi
0040466D   .  FF90 0C030000 call    dword ptr [eax+30C]
00404673   .  8D4D C8       lea     ecx, dword ptr [ebp-38]
00404676   .  50            push    eax
00404677   .  51            push    ecx
00404678   .  FFD3          call    ebx
0040467A   .  8B45 CC       mov     eax, dword ptr [ebp-34]
0040467D   .  8D55 B8       lea     edx, dword ptr [ebp-48]
00404680   .  8945 C0       mov     dword ptr [ebp-40], eax
00404683   .  6A 01         push    1
00404685   .  8D45 A8       lea     eax, dword ptr [ebp-58]
00404688   .  52            push    edx
00404689   .  50            push    eax
0040468A   .  897D CC       mov     dword ptr [ebp-34], edi
0040468D   .  C745 B8 09000>mov     dword ptr [ebp-48], 9
00404694   .  FF15 B4104000 call    dword ptr [<&MSVBVM60.#617>]              ;  MSVBVM60.rtcLeftCharVar
0040469A   .  8B45 C8       mov     eax, dword ptr [ebp-38]
0040469D   .  8D4D 98       lea     ecx, dword ptr [ebp-68]
004046A0   .  6A 01         push    1
004046A2   .  8D55 88       lea     edx, dword ptr [ebp-78]
004046A5   .  51            push    ecx
004046A6   .  52            push    edx
004046A7   .  897D C8       mov     dword ptr [ebp-38], edi
004046AA   .  8945 A0       mov     dword ptr [ebp-60], eax
004046AD   .  C745 98 09000>mov     dword ptr [ebp-68], 9
004046B4   .  FF15 C0104000 call    dword ptr [<&MSVBVM60.#619>]              ;  MSVBVM60.rtcRightCharVar
004046BA   .  8B3D 80104000 mov     edi, dword ptr [<&MSVBVM60.__vbaStrVarVal>;  MSVBVM60.__vbaStrVarVal
004046C0   .  8D45 88       lea     eax, dword ptr [ebp-78]
004046C3   .  8D4D D0       lea     ecx, dword ptr [ebp-30]
004046C6   .  50            push    eax                                       ; /String8
004046C7   .  51            push    ecx                                       ; |ARG2
004046C8   .  FFD7          call    edi                                       ; \__vbaStrVarVal
004046CA   .  50            push    eax                                       ; /String
004046CB   .  FF15 24104000 call    dword ptr [<&MSVBVM60.#516>]              ; \rtcAnsiValueBstr
004046D1   .  66:8BD0       mov     dx, ax                                    ;  ↑传回字符码
004046D4   .  8D45 A8       lea     eax, dword ptr [ebp-58]
004046D7   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
004046DA   .  50            push    eax                                       ; /String8
004046DB   .  51            push    ecx                                       ; |ARG2
004046DC   .  66:8995 26FFF>mov     word ptr [ebp-DA], dx                     ; |
004046E3   .  FFD7          call    edi                                       ; \__vbaStrVarVal
004046E5   .  50            push    eax                                       ; /String
004046E6   .  FF15 24104000 call    dword ptr [<&MSVBVM60.#516>]              ; \rtcAnsiValueBstr
004046EC   .  66:8B95 26FFF>mov     dx, word ptr [ebp-DA]
004046F3   .  8D4D D8       lea     ecx, dword ptr [ebp-28]
004046F6   .  66:03D0       add     dx, ax                                    ;  首尾相加
004046F9   .  C785 78FFFFFF>mov     dword ptr [ebp-88], 2
00404703   .  0F80 94030000 jo      00404A9D
00404709   .  66:8955 80    mov     word ptr [ebp-80], dx                     ;  保存结果
0040470D   .  8D95 78FFFFFF lea     edx, dword ptr [ebp-88]
00404713   .  FF15 08104000 call    dword ptr [<&MSVBVM60.__vbaVarMove>]      ;  MSVBVM60.__vbaVarMove
00404719   .  8D45 D0       lea     eax, dword ptr [ebp-30]
0040471C   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040471F   .  50            push    eax
00404720   .  51            push    ecx
00404721   .  6A 02         push    2
00404723   .  FF15 9C104000 call    dword ptr [<&MSVBVM60.__vbaFreeStrList>]  ;  MSVBVM60.__vbaFreeStrList
00404729   .  8D55 C8       lea     edx, dword ptr [ebp-38]
0040472C   .  8D45 CC       lea     eax, dword ptr [ebp-34]
0040472F   .  52            push    edx
00404730   .  50            push    eax
00404731   .  6A 02         push    2
00404733   .  FF15 20104000 call    dword ptr [<&MSVBVM60.__vbaFreeObjList>]  ;  MSVBVM60.__vbaFreeObjList
00404739   .  8D4D 88       lea     ecx, dword ptr [ebp-78]
0040473C   .  8D55 98       lea     edx, dword ptr [ebp-68]
0040473F   .  51            push    ecx
00404740   .  8D45 A8       lea     eax, dword ptr [ebp-58]
00404743   .  52            push    edx
00404744   .  8D4D B8       lea     ecx, dword ptr [ebp-48]
00404747   .  50            push    eax
00404748   .  51            push    ecx
00404749   .  6A 04         push    4
0040474B   .  FF15 14104000 call    dword ptr [<&MSVBVM60.__vbaFreeVarList>]  ;  MSVBVM60.__vbaFreeVarList
00404751   .  83C4 2C       add     esp, 2C
00404754   .  8D55 D8       lea     edx, dword ptr [ebp-28]
00404757   .  8D85 78FFFFFF lea     eax, dword ptr [ebp-88]
0040475D   .  8D4D B8       lea     ecx, dword ptr [ebp-48]
00404760   .  52            push    edx                                       ; /var18
00404761   .  50            push    eax                                       ; |var28
00404762   .  51            push    ecx                                       ; |SaveTo8
00404763   .  C745 80 3F420>mov     dword ptr [ebp-80], 0F423F                ; |
0040476A   .  C785 78FFFFFF>mov     dword ptr [ebp-88], 3                     ; |
00404774   .  FF15 6C104000 call    dword ptr [<&MSVBVM60.__vbaVarMul>]       ; \__vbaVarMul
0040477A   .  50            push    eax                                       ;  相加结果 * 999999 = 序列号
0040477B   .  FF15 AC104000 call    dword ptr [<&MSVBVM60.__vbaI4Var>]        ;  MSVBVM60.__vbaI4Var
00404781   .  8B16          mov     edx, dword ptr [esi]
00404783   .  56            push    esi
00404784   .  8945 E8       mov     dword ptr [ebp-18], eax                   ;  这里保存计算出的序列号
00404787   .  FF92 FC020000 call    dword ptr [edx+2FC]
0040478D   .  50            push    eax
0040478E   .  8D45 CC       lea     eax, dword ptr [ebp-34]
00404791   .  50            push    eax
00404792   .  FFD3          call    ebx
00404794   .  8BF8          mov     edi, eax
00404796   .  8D55 D4       lea     edx, dword ptr [ebp-2C]
00404799   .  52            push    edx
0040479A   .  57            push    edi
0040479B   .  8B0F          mov     ecx, dword ptr [edi]
0040479D   .  FF91 A0000000 call    dword ptr [ecx+A0]
004047A3   .  85C0          test    eax, eax
004047A5   .  DBE2          fclex
004047A7   .  7D 12         jge     short 004047BB
004047A9   .  68 A0000000   push    0A0
004047AE   .  68 00304000   push    00403000
004047B3   .  57            push    edi
004047B4   .  50            push    eax
004047B5   .  FF15 2C104000 call    dword ptr [<&MSVBVM60.__vbaHresultCheckOb>;  MSVBVM60.__vbaHresultCheckObj
004047BB   >  8B45 D4       mov     eax, dword ptr [ebp-2C]                   ;  取出密码
004047BE   .  50            push    eax
004047BF   .  68 B0304000   push    004030B0                                  ;  空串
004047C4   .  FF15 58104000 call    dword ptr [<&MSVBVM60.__vbaStrCmp>]       ;  MSVBVM60.__vbaStrCmp
004047CA   .  8BF8          mov     edi, eax
004047CC   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
004047CF   .  F7DF          neg     edi
004047D1   .  1BFF          sbb     edi, edi
004047D3   .  47            inc     edi
004047D4   .  F7DF          neg     edi
004047D6   .  FF15 D0104000 call    dword ptr [<&MSVBVM60.__vbaFreeStr>]      ;  MSVBVM60.__vbaFreeStr
004047DC   .  8D4D CC       lea     ecx, dword ptr [ebp-34]
004047DF   .  FF15 D4104000 call    dword ptr [<&MSVBVM60.__vbaFreeObj>]      ;  MSVBVM60.__vbaFreeObj
004047E5   .  66:85FF       test    di, di
004047E8   .  0F84 81000000 je      0040486F
004047EE   .  8B3D B0104000 mov     edi, dword ptr [<&MSVBVM60.__vbaVarDup>]  ;  MSVBVM60.__vbaVarDup
004047F4   .  B9 04000280   mov     ecx, 80020004
004047F9   .  894D 90       mov     dword ptr [ebp-70], ecx
004047FC   .  B8 0A000000   mov     eax, 0A
00404801   .  894D A0       mov     dword ptr [ebp-60], ecx
00404804   .  BE 08000000   mov     esi, 8
00404809   .  8D95 68FFFFFF lea     edx, dword ptr [ebp-98]
0040480F   .  8D4D A8       lea     ecx, dword ptr [ebp-58]
00404812   .  8945 88       mov     dword ptr [ebp-78], eax
00404815   .  8945 98       mov     dword ptr [ebp-68], eax
00404818   .  C785 70FFFFFF>mov     dword ptr [ebp-90], 004030E0              ;  wrong serial!
00404822   .  89B5 68FFFFFF mov     dword ptr [ebp-98], esi
00404828   .  FFD7          call    edi                                       ;  <&MSVBVM60.__vbaVarDup>
0040482A   .  8D95 78FFFFFF lea     edx, dword ptr [ebp-88]
00404830   .  8D4D B8       lea     ecx, dword ptr [ebp-48]
00404833   .  C745 80 B8304>mov     dword ptr [ebp-80], 004030B8              ;  sorry, try again!
0040483A   .  89B5 78FFFFFF mov     dword ptr [ebp-88], esi
00404840   .  FFD7          call    edi
00404842   .  8D4D 88       lea     ecx, dword ptr [ebp-78]
00404845   .  8D55 98       lea     edx, dword ptr [ebp-68]
00404848   .  51            push    ecx
00404849   .  8D45 A8       lea     eax, dword ptr [ebp-58]
0040484C   .  52            push    edx
0040484D   .  50            push    eax
0040484E   .  8D4D B8       lea     ecx, dword ptr [ebp-48]
00404851   .  6A 00         push    0
00404853   .  51            push    ecx
00404854   .  FF15 3C104000 call    dword ptr [<&MSVBVM60.#595>]              ;  MSVBVM60.rtcMsgBox
0040485A   .  8D55 88       lea     edx, dword ptr [ebp-78]
0040485D   .  8D45 98       lea     eax, dword ptr [ebp-68]
00404860   .  52            push    edx
00404861   .  8D4D A8       lea     ecx, dword ptr [ebp-58]
00404864   .  50            push    eax
00404865   .  8D55 B8       lea     edx, dword ptr [ebp-48]
00404868   .  51            push    ecx
00404869   .  52            push    edx
0040486A   .  E9 B2010000   jmp     00404A21
0040486F   >  8B0E          mov     ecx, dword ptr [esi]
00404871   .  8D45 E8       lea     eax, dword ptr [ebp-18]
00404874   .  56            push    esi
00404875   .  8945 80       mov     dword ptr [ebp-80], eax
00404878   .  C785 78FFFFFF>mov     dword ptr [ebp-88], 4003
00404882   .  FF91 FC020000 call    dword ptr [ecx+2FC]
00404888   .  8D55 CC       lea     edx, dword ptr [ebp-34]
0040488B   .  50            push    eax
0040488C   .  52            push    edx
0040488D   .  FFD3          call    ebx
0040488F   .  8BF0          mov     esi, eax
00404891   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
00404894   .  51            push    ecx
00404895   .  56            push    esi
00404896   .  8B06          mov     eax, dword ptr [esi]
00404898   .  FF90 A0000000 call    dword ptr [eax+A0]
0040489E   .  85C0          test    eax, eax
004048A0   .  DBE2          fclex
004048A2   .  7D 12         jge     short 004048B6
004048A4   .  68 A0000000   push    0A0
004048A9   .  68 00304000   push    00403000
004048AE   .  56            push    esi
004048AF   .  50            push    eax
004048B0   .  FF15 2C104000 call    dword ptr [<&MSVBVM60.__vbaHresultCheckOb>;  MSVBVM60.__vbaHresultCheckObj
004048B6   >  8D95 78FFFFFF lea     edx, dword ptr [ebp-88]
004048BC   .  52            push    edx                                       ;  ↓返回str
004048BD   .  FF15 84104000 call    dword ptr [<&MSVBVM60.#536>]              ;  MSVBVM60.rtcStrFromVar
004048C3   .  8BD0          mov     edx, eax
004048C5   .  8D4D D0       lea     ecx, dword ptr [ebp-30]
004048C8   .  FF15 BC104000 call    dword ptr [<&MSVBVM60.__vbaStrMove>]      ;  MSVBVM60.__vbaStrMove
004048CE   .  50            push    eax
004048CF   .  8B45 D4       mov     eax, dword ptr [ebp-2C]
004048D2   .  50            push    eax                                       ;  对比密码和序列号
004048D3   .  FF15 58104000 call    dword ptr [<&MSVBVM60.__vbaStrCmp>]       ;  MSVBVM60.__vbaStrCmp

就这么一段简单的功能MFC里可以这么写:

    CString str;
    GetDlgItemText( IDC_EDIT_NAME,str );                    //获取用户名字串基本信息。
    int len = str.GetLength();

    if ( len >= 2 ){                                        //格式控制。
        unsigned int res = (str[0] + str[len-1]) * 999999;

        CString PassWord;
        PassWord.Format( " %lu",res );
        SetDlgItemText( IDC_EDIT_PASSWORD,PassWord );
    }
    else
        MessageBox( "用户名格式错误!" );

再在OnInitDialog中添加此代码修改标题:SetWindowText(_T("Keygen"));

运行效果:

时间: 2024-10-03 09:44:53

vb小程序浅析的相关文章

拨云浅析:小程序驱动微信生态?

拨云小编来带大家浅析一下,小程序驱动微信生态?自从小程序上线后,用户和从业人员对小程序的认知和解读不断的发生变化,从看好到看衰到再次看好,心路历程跌宕起伏. 微信生态这个词被越来越多的提及.之所以称之为生态,是因为它是健康的.包容的.能带来更多生命的. 虽然微信却只是一个社交软件,但目前微信已不再只是一个产品,它已发展成有创造新生命能力的生态系统. 成为一个生态,需要两个基本条件:「生命」和「生存环境」.生存环境是基础,生命是生态存在的证明. 张小龙在阐述微信的理念时说,微信所要打造的是一片森林

小程序入门(2)浅析篇

有了小程序入门(0)项目创建篇 || 小程序入门(1)项目结构篇.的基础. 一个页面是由 js 与 wxml和wxss配合形成的,而需要将页面显示出来需要在app.json中配置. 现在我们先来看一下决定页面布局的 wxml 的一些简单使用. 最简单的演示: 一个按钮就出现在了调试界面,(需要先保存 ctrl + s ,在去调试页面点击重启.) 按照这个思路我们有很多控件需要进行深入. 现在来看一下wxml与wxss的配合. 先看效果图: 在来看怎么实现, wxml  ,class为关联wxss

浅析微信小程序技术架构(原创)

周末万里虎抽空体验了下微信小程序的DEMO,对小程序的开发有了一个基础的了解与认识,今天就来和大家分享一下我对小程序的看法. 从官方DEMO来看,小程序在技术架构上非常清晰易懂.JS负责业务逻辑的实现,而表现层则WXML和WXSS来共同实现,前者其实就是一种微信定义的模板语言,而后者类似CSS.所以对于擅长前端开发,或者WEB开发的广大开发者而已,小程序的开发可谓降低了不少门槛. 从上面的微信小程序架构图上可以清晰的看出,小程序借助的是JSBridge实现了对底层API接口的调用,所以在小程序里

微信小程序「官方示例代码」浅析【上】

从某个微信群里,拿到了这个IDE的下载地址,然后就有了这个: 根本登不上去,怎么办,怎么办呢? 看代码啊... 反正我又没有保密协议,解压缩一看NodeWebkit + React: 好啦 ,逛逛呗,这真是一个庞大的项目: 等等,这里有一个目录是 weapp/quick,这难道就是传说中的源码,打开一看,果然是.. 好了,毫无疑问,某讯又故计重演. html -> wxml css -> wxss app.js里面是登录代码: app.json定义了一些样式,和页面: wxss里面,明显就是c

【微信小程序】——rpx、px、rem等尺寸间关系浅析

最近开发微信小程序,在写样式表的时候发现用PX的效果不太理想,而官方文档用rpx来做响应式布局单位,就仔细研究了下,在此做个小总结: 这里先引用官方定义的尺寸单位'rpx':可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素. 看不懂?没关系,我们接着往下看.... 日常开发中,我们常用rem.em来做响应式布局的像素单位,他们都是

小程序入门(1)项目结构篇。

项目结构 小程序入门(0)项目创建篇 , 下载开发工具并创建项目. 小程序入门(2)浅析篇 ,了解wxml与wxss的配合使用 小程序进阶(1)豆瓣电影,看文档,复制文档代码基础布局也可以轻松搭建. 在编辑中找到加号!创建button目录. 添加一个外层文件button, 在四个内层文件 js,json , wxml , wxss . 名字与外层文件相同. 创建外层文件,分别在创建内层 js,json,wxml,wxss.这样就生成了一个伪页面,说它是伪页面到后面进行分析. . js:javas

小程序进阶(1)豆瓣电影_布局搭建

小程序入门(0)项目创建篇 小程序入门(1)项目结构篇 小程序入门(2)浅析篇 前篇概述: 有了前面三篇的铺垫,我们创建起了小程序项目,并粗浅的了解了小程序的外部项目结构,了解了 js,wxml,wxss都最基本运用,现在我们在进行循序渐进的深入探究,如何制作真实项目. 先看效果图: 分析步骤: 1.讲头部的视图滑动,简单 2.讲底部的导航栏,简单 3.讲中间的内容显示,中等 4.讲JS逻辑实现.复杂 难度等级的划分只局限于本文,不联系实际开发. 1.头部视图滑动,实例图: 准备工作先做好,创建

微信小程序剖析【下】:运行机制

在上一篇<微信小程序「官方示例代码」浅析[上]>中,我们只是简单的罗列了一下代码,这一篇,让我们来玩点刺激的——就是看看IDE的代码,了解它是怎么运行的. 还好微信的开发团队在软件工程的实践还有待提高,我们才有机会可以深入了解他们的代码——真想建议他们看看Growth的第二部分,构建系统. 解压应用 首先你需要有下面的工具啦 Mac电脑 微信web开发者工具.app WebStorm / 其他编程器 或 IDE,最好可以支持重命名 首先,我们需要右键微信web开发者工具.app,然后显示包的内

一个小程序

主要是测试java的GUI编程,听说java的GUI编程用得不多了,但是在学习的过程中老是用system.out.println打印真的是很无聊.而且看起来很low,所以... 之前用vb还有c#都写过一些小程序,对控件的概念还是不陌生,那么从1+1=2开始吧. java的GUI类都在awt包里.java.awt.*,里面好多东西,不过我分2种:一种是容器类Container,另一种非容器(我自己定的).Container又分为windows与Panel,其中Windows分为Frame与Dia