查看: 9389|回复: 9

调试jlink API

[复制链接]
  • TA的每日心情
    奋斗
    2019-8-1 16:41
  • 签到天数: 1014 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 10:53:06 | 显示全部楼层 |阅读模式
    分享到:
    一楼先放代码:

    (成功下载一字符串到目标板flash)

    #include "windows.h"
    #include "stdio.h"
    typedef int (_cdecl *PROC0)(void);
    typedef int (_cdecl *PROC1)(int);
    typedef int (_cdecl *PROC4)(int, int, int, int);
    typedef int (_cdecl *PROC3)(int, int, int);

    PROC0 JLINK_GetSN;
    PROC0 JLINK_Open;
    PROC4 JLINK_ReadMemU8;
    PROC1 JLINK_SetErrorOutHander;
    PROC1 JLINKARM_SetSpeed;
    PROC1 JLINKARM_SetInitRegsOnReset;
    PROC0 JLINKARM_IsHalted;
    PROC0 JLINKARM_Halt;
    PROC1 JLINKARM_BeginDownload;
    PROC0 JLINKARM_EndDownload;
    PROC3 JLINKARM_WriteMem;
    PROC0 JLINKARM_HasError;
    PROC4 JLINKARM_ExecCommand;
    int test;
    char data[1024]="";
    char testdata[1024]="0123456789abcdef,I WRITE THIS STRING FOR TEST,BEST WISHES!2499279972!!";
    int _cdecl jerr(char *s)
    {
            printf("error : %s\n",s);
            return 0;
    }
    int main()
    {
        HINSTANCE hInst;  
        hInst = LoadLibrary("D:\\Program Files (x86)\\SEGGER\\JLinkARM_V434\\JLinkARM.dll");//
            if(hInst==0)
            {
                    printf("load dll error\r\n");
            }
            else
            {
                    printf("load dll success\r\n");
            }
            JLINK_GetSN = (PROC0)GetProcAddress(hInst, "JLINK_GetSN");
            JLINK_Open = (PROC0)GetProcAddress(hInst, "JLINK_Open");
            JLINK_ReadMemU8 = (PROC4)GetProcAddress(hInst, "JLINKARM_ReadMemU8");
            JLINK_SetErrorOutHander=(PROC1)GetProcAddress(hInst,"JLINKARM_SetErrorOutHandler");
            JLINKARM_SetSpeed= (PROC1)GetProcAddress(hInst,"JLINKARM_SetSpeed");
            JLINKARM_SetInitRegsOnReset= (PROC1)GetProcAddress(hInst,"JLINKARM_SetInitRegsOnReset");
            JLINKARM_IsHalted= (PROC0)GetProcAddress(hInst,"JLINKARM_IsHalted");
            JLINKARM_Halt= (PROC0)GetProcAddress(hInst,"JLINKARM_Halt");
            JLINKARM_EndDownload= (PROC0)GetProcAddress(hInst,"JLINKARM_EndDownload");
            JLINKARM_WriteMem= (PROC3)GetProcAddress(hInst,"JLINKARM_WriteMem");
            JLINKARM_BeginDownload= (PROC1)GetProcAddress(hInst,"JLINKARM_BeginDownload");
            JLINKARM_HasError=(PROC0)GetProcAddress(hInst,"JLINKARM_HasError");
            JLINKARM_ExecCommand=(PROC4)GetProcAddress(hInst,"JLINKARM_ExecCommand");

            test=JLINK_GetSN();
            test=JLINK_Open();

            {
                    char v2;
                    v2=0;
                    JLINKARM_ExecCommand((int)"device = LPC2146",(int)&v2,4000,(int)&v2);
            }
            test=JLINKARM_SetInitRegsOnReset(0);
            test=JLINKARM_SetSpeed(1000);
            //JLINK_SetErrorOutHander((unsigned int)jerr);
            int size=64;
            int base=0;
            test= JLINK_ReadMemU8(base,size,(int)data,0);

            if(!JLINKARM_IsHalted())
            {
                    JLINKARM_Halt();
            }


            JLINKARM_BeginDownload(0);
            while(1)
            {
                    static int cnt=0;
                    int n=8;
                    JLINKARM_WriteMem(0+n*(cnt),n,(int)(testdata+n*(cnt)));
                    ::Sleep(1);
                    cnt++;
                    if(cnt>10)
                    {
                            break;
                    }
                    if(JLINKARM_HasError())
                    {
                            printf("\nfail\n");
                            break;
                    }
            }
            if(!JLINKARM_HasError())
            {
                    printf("\nOK\n");
            }
            JLINKARM_EndDownload();
            //getchar();
    }

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-7-20 10:58:22 | 显示全部楼层
    前排围观
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-1 16:41
  • 签到天数: 1014 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 11:11:00 | 显示全部楼层
    首先,安装完jlink,会有两个文件JLink.exe JLinkARM.dll
    JLinkARM.dll提供API接口
    JLINK.exe暗示API如何调用(网上有资料,但我没有找到足够充分,就从这挖掘了)
    JLINK.exe以命令方式提供借口(你可以知道命令的效果,以及调用的API),那么用IDA分析下吧
    很好,支持的命令都放在个数组里.
    如果猜的没错,可能应该是函数指针,命令名,缩写.
    example:
    .rdata:004163C8                 dd offset sub_407360
    .rdata:004163CC                 dd offset aStep_0       ; "step"
    .rdata:004163D0                 dd offset aS_4          ; "s"

    __________________________________________________________________________
    .rdata:00416380 off_416380      dd offset sub_406B90    ; DATA XREF: sub_403730+1Co
    .rdata:00416380                                         ; sub_40D420+E6r
    .rdata:00416384                 dd offset asc_4195C8    ; "f"
    .rdata:00416388 off_416388      dd offset asc_4195C8    ; DATA XREF: sub_40D420+21o
    .rdata:00416388                                         ; "f"
    .rdata:0041638C                 dd offset sub_406840
    .rdata:00416390                 dd offset aSt           ; "st"
    .rdata:00416394                 dd offset aSt           ; "st"
    .rdata:00416398                 dd offset sub_406A40
    .rdata:0041639C                 dd offset aHwinfo       ; "hwinfo"
    .rdata:004163A0                 dd offset aHwinfo       ; "hwinfo"
    .rdata:004163A4                 dd offset sub_405890
    .rdata:004163A8                 dd offset aHalt         ; "halt"
    .rdata:004163AC                 dd offset asc_4195B0    ; "h"
    .rdata:004163B0                 dd offset sub_4057D0
    .rdata:004163B4                 dd offset aGo           ; "go"
    .rdata:004163B8                 dd offset aG            ; "g"
    .rdata:004163BC                 dd offset sub_403AB0
    .rdata:004163C0                 dd offset aSleep_0      ; "Sleep"
    .rdata:004163C4                 dd offset aSleep_0      ; "Sleep"
    .rdata:004163C8                 dd offset sub_407360
    .rdata:004163CC                 dd offset aStep_0       ; "step"
    .rdata:004163D0                 dd offset aS_4          ; "s"
    .rdata:004163D4                 dd offset sub_4094F0
    .rdata:004163D8                 dd offset aMem          ; "mem"
    .rdata:004163DC                 dd offset aMem          ; "mem"
    .rdata:004163E0                 dd offset sub_409650
    .rdata:004163E4                 dd offset aMem8         ; "mem8"
    .rdata:004163E8                 dd offset aMem8         ; "mem8"
    .rdata:004163EC                 dd offset sub_4097C0
    .rdata:004163F0                 dd offset aMem16        ; "mem16"
    .rdata:004163F4                 dd offset aMem16        ; "mem16"
    .rdata:004163F8                 dd offset sub_409930
    .rdata:004163FC                 dd offset aMem32        ; "mem32"
    .rdata:00416400                 dd offset aMem32        ; "mem32"
    .rdata:00416404                 dd offset sub_409C20
    .rdata:00416408                 dd offset aW1           ; "w1"
    .rdata:0041640C                 dd offset aW1           ; "w1"
    .rdata:00416410                 dd offset sub_409D30
    .rdata:00416414                 dd offset aW2           ; "w2"
    .rdata:00416418                 dd offset aW2           ; "w2"
    .rdata:0041641C                 dd offset sub_409E40
    .rdata:00416420                 dd offset aW4           ; "w4"
    .rdata:00416424                 dd offset aW4           ; "w4"
    .rdata:00416428                 dd offset sub_40A020
    .rdata:0041642C                 dd offset aWm           ; "wm"
    .rdata:00416430                 dd offset aWm           ; "wm"
    .rdata:00416434                 dd offset sub_4067B0
    .rdata:00416438                 dd offset aIs           ; "is"
    .rdata:0041643C                 dd offset aIs           ; "is"
    .rdata:00416440                 dd offset sub_408700
    .rdata:00416444                 dd offset aMs           ; "ms"
    .rdata:00416448                 dd offset aMs           ; "ms"
    .rdata:0041644C                 dd offset sub_408750
    .rdata:00416450                 dd offset aMr           ; "mr"
    .rdata:00416454                 dd offset aMr           ; "mr"
    .rdata:00416458                 dd offset sub_4083A0
    .rdata:0041645C                 dd offset aR            ; "r"
    .rdata:00416460                 dd offset aR            ; "r"
    .rdata:00416464                 dd offset sub_408410
    .rdata:00416468                 dd offset aRx           ; "rx"
    .rdata:0041646C                 dd offset aRx           ; "rx"
    .rdata:00416470                 dd offset sub_408460
    .rdata:00416474                 dd offset aRnh          ; "rnh"
    .rdata:00416478                 dd offset aRnh          ; "rnh"
    .rdata:0041647C                 dd offset sub_405200
    .rdata:00416480                 dd offset aRsettype     ; "RSetType"
    .rdata:00416484                 dd offset aRst          ; "rst"
    .rdata:00416488                 dd offset sub_407410
    .rdata:0041648C                 dd offset aRegs         ; "regs"
    .rdata:00416490                 dd offset aRegs         ; "regs"
    .rdata:00416494                 dd offset sub_4092B0
    .rdata:00416498                 dd offset aRreg         ; "rreg"
    .rdata:0041649C                 dd offset aRreg         ; "rreg"
    .rdata:004164A0                 dd offset sub_409310
    .rdata:004164A4                 dd offset aWreg         ; "wreg"
    .rdata:004164A8                 dd offset aWreg         ; "wreg"
    .rdata:004164AC                 dd offset sub_405630
    .rdata:004164B0                 dd offset aSetbp        ; "SetBP"
    .rdata:004164B4                 dd offset aSetbp        ; "SetBP"
    .rdata:004164B8                 dd offset sub_4086A0
    .rdata:004164BC                 dd offset aClrbp        ; "ClrBP"
    .rdata:004164C0                 dd offset aClrbp        ; "ClrBP"
    .rdata:004164C4                 dd offset sub_4052C0
    .rdata:004164C8                 dd offset aSetwp        ; "SetWP"
    .rdata:004164CC                 dd offset aSetwp        ; "SetWP"
    .rdata:004164D0                 dd offset sub_4055C0
    .rdata:004164D4                 dd offset aClrwp        ; "ClrWP"
    .rdata:004164D8                 dd offset aClrwp        ; "ClrWP"
    .rdata:004164DC                 dd offset sub_40C4E0
    .rdata:004164E0                 dd offset aVcatch       ; "VCatch"
    .rdata:004164E4                 dd offset aVc           ; "vc"
    .rdata:004164E8                 dd offset sub_401F10
    .rdata:004164EC                 dd offset aLoadbin      ; "loadbin"
    .rdata:004164F0                 dd offset aLoadbin      ; "loadbin"
    .rdata:004164F4                 dd offset sub_402170
    .rdata:004164F8                 dd offset aSavebin      ; "savebin"
    .rdata:004164FC                 dd offset aSavebin      ; "savebin"
    .rdata:00416500                 dd offset sub_4085B0
    .rdata:00416504                 dd offset aSetpc        ; "setpc"
    .rdata:00416508                 dd offset aSetpc        ; "setpc"
    .rdata:0041650C                 dd offset sub_4057A0
    .rdata:00416510                 dd offset aLe_0         ; "le"
    .rdata:00416514                 dd offset aLe_0         ; "le"
    .rdata:00416518                 dd offset sub_4057B0
    .rdata:0041651C                 dd offset aBe           ; "be"
    .rdata:00416520                 dd offset aBe           ; "be"
    .rdata:00416524                 dd offset sub_407440
    .rdata:00416528                 dd offset aLog          ; "log"
    .rdata:0041652C                 dd offset aLog          ; "log"
    .rdata:00416530                 dd offset sub_407480
    .rdata:00416534                 dd offset aUnlock       ; "unlock"
    .rdata:00416538                 dd offset aUnlock       ; "unlock"
    .rdata:0041653C                 dd offset sub_409470
    .rdata:00416540                 dd offset aGetdebuginfo ; "GetDebugInfo"
    .rdata:00416544                 dd offset aGdi          ; "gdi"
    .rdata:00416548                 dd offset sub_40C530
    .rdata:0041654C                 dd offset aSdubm        ; "sdubm"
    .rdata:00416550                 dd offset aSdubm        ; "sdubm"
    .rdata:00416554                 dd offset sub_40C5C0
    .rdata:00416558                 dd offset aMoe          ; "moe"
    .rdata:0041655C                 dd offset aMoe          ; "moe"
    .rdata:00416560                 dd offset sub_406BB0
    .rdata:00416564                 dd offset aIce          ; "ice"
    .rdata:00416568                 dd offset aIce          ; "ice"
    .rdata:0041656C                 dd offset sub_408F50
    .rdata:00416570                 dd offset aRi           ; "ri"
    .rdata:00416574                 dd offset aRi           ; "ri"
    .rdata:00416578                 dd offset sub_408EC0
    .rdata:0041657C                 dd offset aWi           ; "wi"
    .rdata:00416580                 dd offset aWi           ; "wi"
    .rdata:00416584                 dd offset sub_406D70
    .rdata:00416588                 dd offset aEtm          ; "etm"
    .rdata:0041658C                 dd offset aEtm          ; "etm"
    .rdata:00416590                 dd offset sub_407160
    .rdata:00416594                 dd offset aRe           ; "re"
    .rdata:00416598                 dd offset aRe           ; "re"
    .rdata:0041659C                 dd offset sub_4070D0
    .rdata:004165A0                 dd offset aWe           ; "we"
    .rdata:004165A4                 dd offset aWe           ; "we"
    .rdata:004165A8                 dd offset sub_4057C0
    .rdata:004165AC                 dd offset aEs           ; "es"
    .rdata:004165B0                 dd offset aEs           ; "es"
    .rdata:004165B4                 dd offset sub_4071B0
    .rdata:004165B8                 dd offset aEtb          ; "etb"
    .rdata:004165BC                 dd offset aEtb          ; "etb"
    .rdata:004165C0                 dd offset sub_407310
    .rdata:004165C4                 dd offset aRb           ; "rb"
    .rdata:004165C8                 dd offset aRb           ; "rb"
    .rdata:004165CC                 dd offset sub_407280
    .rdata:004165D0                 dd offset aWb           ; "wb"
    .rdata:004165D4                 dd offset aWb           ; "wb"
    .rdata:004165D8                 dd offset sub_405150
    .rdata:004165DC                 dd offset aTaddbranch   ; "TAddBranch"
    .rdata:004165E0                 dd offset off_419478
    .rdata:004165E4                 dd offset sub_405110
    .rdata:004165E8                 dd offset aTaddinst     ; "TAddInst"
    .rdata:004165EC                 dd offset aTai          ; "tai"
    .rdata:004165F0                 dd offset sub_404F90
    .rdata:004165F4                 dd offset aTclear       ; "TClear"
    .rdata:004165F8                 dd offset aTc           ; "tc"
    .rdata:004165FC                 dd offset sub_4050B0
    .rdata:00416600                 dd offset aTsetsize     ; "TSetSize"
    .rdata:00416604                 dd offset aTss          ; "tss"
    .rdata:00416608                 dd offset sub_404FA0
    .rdata:0041660C                 dd offset aTsetformat   ; "TSetFormat"
    .rdata:00416610                 dd offset aTsf          ; "tsf"
    .rdata:00416614                 dd offset sub_405790
    .rdata:00416618                 dd offset aTsr          ; "tsr"
    .rdata:0041661C                 dd offset aTsr          ; "tsr"
    .rdata:00416620                 dd offset sub_405040
    .rdata:00416624                 dd offset aTstart       ; "TStart"
    .rdata:00416628                 dd offset aTstart       ; "TStart"
    .rdata:0041662C                 dd offset sub_405090
    .rdata:00416630                 dd offset aTstop        ; "TStop"
    .rdata:00416634                 dd offset aTstop        ; "TStop"
    .rdata:00416638                 dd offset sub_40A610
    .rdata:0041663C                 dd offset aSwospeed     ; "SWOSpeed"
    .rdata:00416640                 dd offset aSwospeed     ; "SWOSpeed"
    .rdata:00416644                 dd offset sub_40A6F0
    .rdata:00416648                 dd offset aSwostart     ; "SWOStart"
    .rdata:0041664C                 dd offset aSwostart     ; "SWOStart"
    .rdata:00416650                 dd offset sub_40A7D0
    .rdata:00416654                 dd offset aSwostop      ; "SWOStop"
    .rdata:00416658                 dd offset aSwostop      ; "SWOStop"
    .rdata:0041665C                 dd offset sub_40A7E0
    .rdata:00416660                 dd offset aSwostat      ; "SWOStat"
    .rdata:00416664                 dd offset aSwostat      ; "SWOStat"
    .rdata:00416668                 dd offset sub_40A800
    .rdata:0041666C                 dd offset aSworead      ; "SWORead"
    .rdata:00416670                 dd offset aSworead      ; "SWORead"
    .rdata:00416674                 dd offset sub_40A990
    .rdata:00416678                 dd offset aSwoshow      ; "SWOShow"
    .rdata:0041667C                 dd offset aSwoshow      ; "SWOShow"
    .rdata:00416680                 dd offset sub_40B0B0
    .rdata:00416684                 dd offset aSwoflush     ; "SWOFlush"
    .rdata:00416688                 dd offset aSwoflush     ; "SWOFlush"
    .rdata:0041668C                 dd offset sub_40B110
    .rdata:00416690                 dd offset aPowertrace   ; "PowerTrace"
    .rdata:00416694                 dd offset aPowertrace   ; "PowerTrace"
    .rdata:00416698                 dd offset sub_40B590
    .rdata:0041669C                 dd offset aEcwrite      ; "ECWrite"
    .rdata:004166A0                 dd offset aEcw          ; "ecw"
    .rdata:004166A4                 dd offset sub_40B6C0
    .rdata:004166A8                 dd offset aEcread       ; "ECRead"
    .rdata:004166AC                 dd offset aEcr          ; "ecr"
    .rdata:004166B0                 dd offset sub_40B890
    .rdata:004166B4                 dd offset aEcissupported ; "ECIsSupported"
    .rdata:004166B8                 dd offset aEcis         ; "ecis"
    .rdata:004166BC                 dd offset sub_40B8D0
    .rdata:004166C0                 dd offset aFwrite       ; "fwrite"
    .rdata:004166C4                 dd offset aFwr          ; "fwr"
    .rdata:004166C8                 dd offset sub_40BBD0
    .rdata:004166CC                 dd offset aFread        ; "fread"
    .rdata:004166D0                 dd offset aFrd          ; "frd"
    .rdata:004166D4                 dd offset sub_40BEE0
    .rdata:004166D8                 dd offset aFshow        ; "fshow"
    .rdata:004166DC                 dd offset aFshow        ; "fshow"
    .rdata:004166E0                 dd offset sub_40C110
    .rdata:004166E4                 dd offset aFdelete      ; "fdelete"
    .rdata:004166E8                 dd offset aFdel         ; "fdel"
    .rdata:004166EC                 dd offset sub_40C1E0
    .rdata:004166F0                 dd offset aFsize        ; "fsize"
    .rdata:004166F4                 dd offset aFsz          ; "fsz"
    .rdata:004166F8                 dd offset sub_408D70
    .rdata:004166FC                 dd offset aTesthaltgo   ; "TestHaltGo"
    .rdata:00416700                 dd offset aThg          ; "thg"
    .rdata:00416704                 dd offset sub_408DE0
    .rdata:00416708                 dd offset aTeststep     ; "TestStep"
    .rdata:0041670C                 dd offset aTs           ; "ts"
    .rdata:00416710                 dd offset sub_4018F0
    .rdata:00416714                 dd offset aTestwspeed   ; "testwspeed"
    .rdata:00416718                 dd offset aTestw        ; "testw"
    .rdata:0041671C                 dd offset sub_401BA0
    .rdata:00416720                 dd offset aTestrspeed   ; "testrspeed"
    .rdata:00416724                 dd offset aTestr        ; "testr"
    .rdata:00416728                 dd offset sub_401D80
    .rdata:0041672C                 dd offset aTestcspeed   ; "testcspeed"
    .rdata:00416730                 dd offset aTestc        ; "testc"
    .rdata:00416734                 dd offset sub_4080C0
    .rdata:00416738                 dd offset aTestpcode    ; "testpcode"
    .rdata:0041673C                 dd offset aTestp        ; "testp"
    .rdata:00416740                 dd offset sub_408080
    .rdata:00416744                 dd offset aTestrecover  ; "testRecover"
    .rdata:00416748                 dd offset aTestrecover_0 ; "testrecover"
    .rdata:0041674C                 dd offset sub_401400
    .rdata:00416750                 dd offset aTestnwspeed  ; "testnwspeed"
    .rdata:00416754                 dd offset aTestnw       ; "testnw"
    .rdata:00416758                 dd offset sub_401650
    .rdata:0041675C                 dd offset aTestnrspeed  ; "testnrspeed"
    .rdata:00416760                 dd offset aTestnr       ; "testnr"
    .rdata:00416764                 dd offset sub_404C00
    .rdata:00416768                 dd offset aConfig       ; "Config"
    .rdata:0041676C                 dd offset aConfig       ; "Config"
    .rdata:00416770                 dd offset sub_4084C0
    .rdata:00416774                 dd offset aSpeed        ; "speed"
    .rdata:00416778                 dd offset aSpeed        ; "speed"
    .rdata:0041677C                 dd offset sub_4067D0
    .rdata:00416780                 dd offset aI            ; "i"
    .rdata:00416784                 dd offset aI            ; "i"
    .rdata:00416788                 dd offset sub_408FA0
    .rdata:0041678C                 dd offset aWjc          ; "wjc"
    .rdata:00416790                 dd offset aWjc          ; "wjc"
    .rdata:00416794                 dd offset sub_409070
    .rdata:00416798                 dd offset aWjd          ; "wjd"
    .rdata:0041679C                 dd offset aWjd          ; "wjd"
    .rdata:004167A0                 dd offset sub_402320
    .rdata:004167A4                 dd offset aWjraw        ; "wjraw"
    .rdata:004167A8                 dd offset aWjr          ; "wjr"
    .rdata:004167AC                 dd offset sub_406790
    .rdata:004167B0                 dd offset aRtap         ; "RTAP"
    .rdata:004167B4                 dd offset aRtap         ; "RTAP"
    .rdata:004167B8                 dd offset sub_406780
    .rdata:004167BC                 dd offset aRt           ; "rt"
    .rdata:004167C0                 dd offset aRt           ; "rt"
    .rdata:004167C4                 dd offset sub_406670
    .rdata:004167C8                 dd offset aC00          ; "c00"
    .rdata:004167CC                 dd offset aC00          ; "c00"
    .rdata:004167D0                 dd offset sub_406600
    .rdata:004167D4                 dd offset aC_0          ; "c"
    .rdata:004167D8                 dd offset aC_0          ; "c"
    .rdata:004167DC                 dd offset sub_406760
    .rdata:004167E0                 dd offset a0            ; "0"
    .rdata:004167E4                 dd offset a0            ; "0"
    .rdata:004167E8                 dd offset sub_406770
    .rdata:004167EC                 dd offset a1            ; "1"
    .rdata:004167F0                 dd offset a1            ; "1"
    .rdata:004167F4                 dd offset sub_406740
    .rdata:004167F8                 dd offset aT0           ; "t0"
    .rdata:004167FC                 dd offset aT0           ; "t0"
    .rdata:00416800                 dd offset sub_406750
    .rdata:00416804                 dd offset aT1           ; "t1"
    .rdata:00416808                 dd offset aT1           ; "t1"
    .rdata:0041680C                 dd offset sub_406700
    .rdata:00416810                 dd offset aTrst0        ; "trst0"
    .rdata:00416814                 dd offset aTrst0        ; "trst0"
    .rdata:00416818                 dd offset sub_406710
    .rdata:0041681C                 dd offset aTrst1        ; "trst1"
    .rdata:00416820                 dd offset aTrst1        ; "trst1"
    .rdata:00416824                 dd offset sub_406720
    .rdata:00416828                 dd offset aR0           ; "r0"
    .rdata:0041682C                 dd offset aR0           ; "r0"
    .rdata:00416830                 dd offset sub_406730
    .rdata:00416834                 dd offset aR1           ; "r1"
    .rdata:00416838                 dd offset aR1           ; "r1"
    .rdata:0041683C                 dd offset sub_402D00
    .rdata:00416840                 dd offset aUsb          ; "usb"
    .rdata:00416844                 dd offset aUsb          ; "usb"
    .rdata:00416848                 dd offset sub_403A20
    .rdata:0041684C                 dd offset aIp           ; "ip"
    .rdata:00416850                 dd offset aIp           ; "ip"
    .rdata:00416854                 dd '@%0'
    .rdata:00416858                 dd offset aSwdreadap    ; "SWDReadAP"
    .rdata:0041685C                 dd offset aSrap         ; "srap"
    .rdata:00416860                 dd offset sub_402800
    .rdata:00416864                 dd offset aSwdwriteap   ; "SWDWriteAP"
    .rdata:00416868                 dd offset aSwap         ; "swap"
    .rdata:0041686C                 dd offset sub_402730
    .rdata:00416870                 dd offset aSwdreaddp    ; "SWDReadDP"
    .rdata:00416874                 dd offset aSrdp         ; "srdp"
    .rdata:00416878                 dd offset sub_4029E0
    .rdata:0041687C                 dd offset aSwdwritedp   ; "SWDWriteDP"
    .rdata:00416880                 dd offset aSwdp         ; "swdp"
    .rdata:00416884                 dd offset sub_402AF0
    .rdata:00416888                 dd offset aSwdselect    ; "SWDSelect"
    .rdata:0041688C                 dd offset aSwdselect    ; "SWDSelect"
    .rdata:00416890                 dd offset sub_40C7C0
    .rdata:00416894                 dd offset aGetcounters  ; "GetCounters"
    .rdata:00416898                 dd offset aGc           ; "gc"
    .rdata:0041689C                 dd offset sub_404E80
    .rdata:004168A0                 dd offset aSelectinterfac ; "SelectInterface"
    .rdata:004168A4                 dd offset aSi           ; "si"
    .rdata:004168A8                 dd offset sub_408C50
    .rdata:004168AC                 dd offset aPower        ; "power"
    .rdata:004168B0                 dd offset aPower        ; "power"
    .rdata:004168B4                 dd offset sub_404C90
    .rdata:004168B8                 dd offset aWconf        ; "wconf"
    .rdata:004168BC                 dd offset aWconf        ; "wconf"
    .rdata:004168C0                 dd offset sub_404D20
    .rdata:004168C4                 dd offset aRconf        ; "rconf"
    .rdata:004168C8                 dd offset aRconf        ; "rconf"
    .rdata:004168CC                 dd offset sub_403B00
    .rdata:004168D0                 dd offset aUsbaddr      ; "usbaddr"
    .rdata:004168D4                 dd offset aUsbaddr      ; "usbaddr"
    .rdata:004168D8                 dd offset sub_403F10
    .rdata:004168DC                 dd offset aIpaddr       ; "ipaddr"
    .rdata:004168E0                 dd offset aIpaddr       ; "ipaddr"
    .rdata:004168E4                 dd offset sub_4043A0
    .rdata:004168E8                 dd offset aGwaddr       ; "gwaddr"
    .rdata:004168EC                 dd offset aGwaddr       ; "gwaddr"
    .rdata:004168F0                 dd offset sub_404660
    .rdata:004168F4                 dd offset aDnsaddr      ; "dnsaddr"
    .rdata:004168F8                 dd offset aDnsaddr      ; "dnsaddr"
    .rdata:004168FC                 dd offset sub_403C00
    .rdata:00416900                 dd offset aMacaddr      ; "macaddr"
    .rdata:00416904                 dd offset aMacaddr      ; "macaddr"
    .rdata:00416908                 dd offset sub_404920
    .rdata:0041690C                 dd offset aShowconf     ; "showconf"
    .rdata:00416910                 dd offset aConf         ; "conf"
    .rdata:00416914                 dd offset sub_40C830
    .rdata:00416918                 dd offset aCalibrate    ; "calibrate"
    .rdata:0041691C                 dd offset aCalib        ; "calib"
    .rdata:00416920                 dd offset sub_40CE10
    .rdata:00416924                 dd offset aSelectemulator ; "SelectEmulator"
    .rdata:00416928                 dd offset aSelemu       ; "selemu"
    .rdata:0041692C                 dd offset sub_40CAF0
    .rdata:00416930                 dd offset aShowemulist  ; "ShowEmuList"
    .rdata:00416934                 dd offset aShowemulist  ; "ShowEmuList"
    .rdata:00416938                 dd offset sub_40B580
    .rdata:0041693C                 dd offset aRawtrace     ; "rawtrace"
    .rdata:00416940                 dd offset aRtr          ; "rtr"
    .rdata:00416944                 dd offset sub_4011F0
    .rdata:00416948                 dd offset aTestnet      ; "testnet"
    .rdata:0041694C                 dd offset aTn           ; "tn"
    .rdata:00416950                 dd offset sub_40A1D0
    .rdata:00416954                 dd offset aShowemus     ; "ShowEmus"
    .rdata:00416958                 dd offset aEmu          ; "emu"
    .rdata:0041695C                 dd offset sub_40C2B0
    .rdata:00416960                 dd offset aEmustatus    ; "EmuStatus"
    .rdata:00416964                 dd offset aEst          ; "est"
    .rdata:00416968                 dd offset sub_40A320
    .rdata:0041696C                 dd offset aConfigemu    ; "ConfigEmu"
    .rdata:00416970                 dd offset aCe           ; "ce"
    .rdata:00416974                 dd offset sub_40A240
    .rdata:00416978                 dd offset aSelectemu    ; "SelectEmu"
    .rdata:0041697C                 dd offset aSe           ; "se"
    .rdata:00416980                 dd offset sub_40A2A0
    .rdata:00416984                 dd offset aSelectemubysn ; "SelectEmuBySN"
    .rdata:00416988                 dd offset aSesn         ; "sesn"
    .rdata:0041698C                 dd offset sub_404DE0
    .rdata:00416990                 dd offset aSelectfamily ; "SelectFamily"
    .rdata:00416994                 dd offset aSf           ; "sf"
    .rdata:00416998                 dd offset sub_404E30
    .rdata:0041699C                 dd offset aSelectcore   ; "SelectCore"
    .rdata:004169A0                 dd offset aSc           ; "sc"
    .rdata:004169A4                 dd offset sub_409F40
    .rdata:004169A8                 dd offset aConfigdevices ; "ConfigDevices"
    .rdata:004169AC                 dd offset aCd           ; "cd"
    .rdata:004169B0                 dd offset sub_409AA0
    .rdata:004169B4                 dd offset aMemi         ; "memi"
    .rdata:004169B8                 dd offset aMemi         ; "memi"
    .rdata:004169BC                 dd offset sub_40C820
    .rdata:004169C0                 dd offset aTest         ; "test"
    .rdata:004169C4                 dd offset aTest         ; "test"
    .rdata:004169C8                 dd offset sub_40C2D0
    .rdata:004169CC                 dd offset aIndi         ; "indi"
    .rdata:004169D0                 dd offset aIndi         ; "indi"
    .rdata:004169D4                 dd offset sub_40A4A0
    .rdata:004169D8                 dd offset aTerm         ; "term"
    .rdata:004169DC                 dd offset aTerm         ; "term"
    .rdata:004169E0                 dd offset sub_408370
    .rdata:004169E4                 dd offset aW            ; "w"
    .rdata:004169E8                 dd offset aW            ; "w"
    .rdata:004169EC                 dd offset sub_408470
    .rdata:004169F0                 dd offset aSel          ; "sel"
    .rdata:004169F4                 dd offset aSel          ; "sel"
    .rdata:004169F8                 dd offset sub_408800
    .rdata:004169FC                 dd offset aRcp15        ; "rcp15"
    .rdata:00416A00                 dd offset aRcp15        ; "rcp15"
    .rdata:00416A04                 dd offset sub_4089F0
    .rdata:00416A08                 dd offset aWcp15        ; "wcp15"
    .rdata:00416A0C                 dd offset aWcp15        ; "wcp15"
    .rdata:00416A10                 dd offset sub_408880
    .rdata:00416A14                 dd offset aRcp15ex      ; "rcp15ex"
    .rdata:00416A18                 dd offset aRce          ; "rce"
    .rdata:00416A1C                 dd offset sub_408A80
    .rdata:00416A20                 dd offset aWcp15ex      ; "wcp15ex"
    .rdata:00416A24                 dd offset aWce          ; "wce"
    .rdata:00416A28                 dd offset sub_408C10
    .rdata:00416A2C                 dd offset aExec_0       ; "Exec"
    .rdata:00416A30                 dd offset aExec_0       ; "Exec"
    .rdata:00416A34                 dd offset sub_408E40
    .rdata:00416A38                 dd offset unk_41903C
    .rdata:00416A3C                 dd offset unk_41903C
    .rdata:00416A40                 dd offset sub_40A0E0
    .rdata:00416A44                 dd offset unk_419038
    .rdata:00416A48                 dd offset unk_419038
    .rdata:00416A4C                 dd offset sub_40A130
    .rdata:00416A50                 dd offset unk_419034
    .rdata:00416A54                 dd offset unk_419034
    .rdata:00416A58
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-1 16:41
  • 签到天数: 1014 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 11:24:35 | 显示全部楼层
    找到loadbin
    .rdata:004164E8                 dd offset sub_401F10
    .rdata:004164EC                 dd offset aLoadbin      ; "loadbin"
    .rdata:004164F0                 dd offset aLoadbin      ; "loadbin"
    sub_401F10的实现就是关键
    jump sub_401F10 ,F5得到伪代码:


    int __cdecl sub_401F10(char a1)
    {
      void *v1; // eax@2
      void *v2; // ebp@2
      void *v3; // eax@3
      void *v4; // ebx@3
      DWORD v5; // esi@3
      size_t v6; // eax@3
      int v7; // eax@4
      int v8; // ecx@6
      int v10; // [sp+0h] [bp-308h]@1
      char v11; // [sp+4h] [bp-304h]@2
      char v12; // [sp+20h] [bp-2E8h]@9
      __int16 v13; // [sp+28h] [bp-2E0h]@10
      const CHAR FileName; // [sp+204h] [bp-104h]@1

      sub_4020C0(&a1, &FileName, 260);
      if ( !sub_4015B0(&a1, &v10) )
      {
        v11 = 0;
        sub_40E890("Loading binary file... [%s]\n", &FileName);
        v1 = (void *)sub_40E2C0(&FileName, 5);
        v2 = v1;
        if ( v1 == (void *)-1 )
        {
          memcpy(&v11, "ERROR: Could not open file.\n", 0x1Cu);
          v12 = aErrorCouldNotO[28];
        }
        else
        {
          v6 = sub_4020B0(v1);
          v5 = v6;
          v3 = malloc(v6);
          v4 = v3;
          if ( v3 )
          {
            v7 = sub_402080(v2, v3, v5);
            if ( v7 < 0 || v7 != v5 )
            {
              memcpy(&v11, "ERROR: Could not read file.\n", 0x1Cu);
              v12 = aErrorCouldNotR[28];
              sub_40EB10(v4);
              sub_40E350(v2);
            }
            else
            {
              sub_40E890("Writing bin data into target memory @ 0x%.8X.\n", v10);
              if ( !(unsigned __int8)JLINKARM_IsHalted(v8) )
                JLINKARM_Halt();
              JLINKARM_BeginDownload(0);
              JLINKARM_WriteMem(v10, v5, v4);
              JLINKARM_EndDownload();
              sub_40EB10(v4);
              sub_40E350(v2);
            }
          }
          else
          {
            memcpy(&v11, "ERROR: Could not malloc file buffer.\n", 0x24u);
            v13 = *(_WORD *)&aErrorCouldNotM[36];
            sub_40E350(v2);
          }
        }
        if ( v11 )
          sub_40E890(&v11);
      }
      return 0;
    }
    前边是处理文件,这不看都知道(loadbin 的参数是文件名)
    其余直接参照JLINKARM_*的调用顺序就好了.
    最大困难是API参数的含义,那么baidu,或者分析jlink.exe(有些容易看出来,有些看不出来的可以再参考下exe别处是如何调用的)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-8-1 16:41
  • 签到天数: 1014 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 11:38:10 | 显示全部楼层
    另外两个函数
    这其实实现的就是双击jink.exe正常情况下看到的

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      int v3; // ebx@1
      int v4; // eax@8
      const char *v5; // ecx@20
      int v7; // esi@32
      char v8; // al@32
      const char *v9; // [sp-8h] [bp-2F4h]@10
      int v10; // [sp-4h] [bp-2F0h]@10
      char *v11; // [sp+Ch] [bp-2E0h]@8
      char v12; // [sp+13h] [bp-2D9h]@1
      int v13; // [sp+14h] [bp-2D8h]@8
      int v14; // [sp+18h] [bp-2D4h]@1
      char v15; // [sp+1Ch] [bp-2D0h]@1
      int v16; // [sp+1Dh] [bp-2CFh]@1
      __int16 v17; // [sp+21h] [bp-2CBh]@1
      char v18; // [sp+23h] [bp-2C9h]@1
      char Dest[4]; // [sp+24h] [bp-2C8h]@3
      char v20; // [sp+2Eh] [bp-2BEh]@3
      __int16 v21; // [sp+EAh] [bp-202h]@3
      char v22; // [sp+ECh] [bp-200h]@27

      v16 = 0;
      v17 = 0;
      v3 = 0;
      v15 = 0;
      v18 = 0;
      v14 = 0;
      v12 = 0;
      sub_40E890("SEGGER J-Link Commander V%d.%02d%s ('?' for help)\n", 4, 34, &v15);
      sub_40E890("Compiled Aug 26 2011 18:24:47\n");
      if ( argc > 1 )
      {
        if ( !sub_407530(argv[1], "ip") )
        {
          strcpy(Dest, "localhost");
          memset(&v20, 0, 0xBCu);
          v21 = 0;
          if ( argc > 2 )
            strncpy(Dest, argv[2], 0xC8u);
          sub_40E890("Connecting via TCP/IP to %s\n", Dest);
          JLINKARM_SelectIP(Dest, 0);
          goto LABEL_12;
        }
        if ( !sub_407530(argv[1], "SelectEmuBySN") )
        {
          if ( argc <= 2 )
            goto LABEL_12;
          v11 = (char *)argv[2];
          sub_401870(&v11, &v13);
          v4 = JLINKARM_EMU_SelectByUSBSN(v13);
          if ( v4 >= 0 )
          {
            sub_40E890("Emulator %d with USB serial number %d selected.\n", v4, v13);
            goto LABEL_12;
          }
          v10 = v13;
          v9 = "Could not find emulator with USB serial number %d.\n";
    LABEL_11:
          sub_40E890(v9, v10);
          goto LABEL_12;
        }
        if ( sub_407530(argv[1], "usb") )
        {
          if ( argc > 2 || !sub_407530(argv[1], "/?") )
          {
            sub_40E890("USAGE:\n");
            sub_40E890("  JLink [filename]\n\n");
            sub_40E890("  NOTE: If a filename is specified, J-Link Commander\n");
            sub_40E890("  will run in script mode.\n");
            return 0;
          }
        }
        else
        {
          if ( argc > 2 )
          {
            v5 = argv[2];
            v13 = 0;
            v11 = (char *)v5;
            sub_401590((int)&v11);
            if ( *v11 )
              sub_401870(&v11, &v13);
            sub_40E890("Connecting to J-Link via USB (Port: %d)\n", v13);
            if ( (unsigned __int8)JLINKARM_SelectUSB(v13) )
            {
              v10 = v13;
              v9 = "Can not connect via USB (Port: %d)\n";
              goto LABEL_11;
            }
          }
        }
      }
    LABEL_12:
      timeBeginPeriod(1u);
      if ( argc != 2 || !sub_407530(argv[1], "ip") || !sub_407530(argv[1], "usb") || !sub_407530(argv[1], "SelectEmuBySN") )
      {
    LABEL_31:
        sub_402D90();
        if ( !v12 )
        {
    LABEL_35:
          sub_40D680();
          goto LABEL_36;
        }
    LABEL_32:
        sub_40E890("Processing script file...\n");
        v8 = sub_40D300(v3);
        v7 = v8;
        v14 = v8;
        sub_40E890("\nScript processing completed.\n\n");
        if ( v3 )
          sub_40EB10((LPVOID)v3);
        if ( v7 )
          goto LABEL_36;
        goto LABEL_35;
      }
      v3 = sub_40D550(argv[1]);
      if ( v3 )
      {
        v12 = 1;
        v11 = (char *)v3;
        if ( (unsigned __int8)sub_40D1C0(&v11, &v22, 512) )
        {
          v11 = &v22;
          if ( !(unsigned __int8)sub_404270(&v11, "usb")
            || !(unsigned __int8)sub_404270(&v11, "ip")
            || !(unsigned __int8)sub_404270(&v11, "SelectEmuBySN") )
            goto LABEL_32;
        }
        goto LABEL_31;
      }
      v14 = 1;
    LABEL_36:
      timeEndPeriod(1u);
      return v14;
    }
    _________________________________________________________________

    char __cdecl sub_402D90()
    {
      const char *v0; // eax@1
      signed int v2; // ecx@3
      int v3; // edi@3
      char v4; // zf@5
      signed int v5; // ecx@7
      signed int v6; // ecx@7
      unsigned int v7; // ebx@7
      char *v8; // edi@7
      const void *v9; // esi@7
      char v10; // zf@9
      signed int v11; // ecx@11
      int v12; // edi@11
      char v13; // zf@13
      unsigned int v14; // edx@15
      signed int v15; // ecx@15
      signed int v16; // ecx@15
      char *v17; // edi@15
      const void *v18; // esi@15
      char v19; // zf@17
      void *v20; // eax@19
      int v21; // ST2C_4@20
      int v22; // eax@23
      int v23; // edx@28
      int v24; // ecx@28
      int v25; // edi@29
      const char *v26; // [sp-10h] [bp-72Ch]@31
      unsigned int v27; // [sp+4h] [bp-718h]@29
      unsigned int v28; // [sp+8h] [bp-714h]@37
      int v29; // [sp+Ch] [bp-710h]@38
      char FileName; // [sp+14h] [bp-708h]@3
      int v31; // [sp+118h] [bp-604h]@20
      int v32; // [sp+11Ch] [bp-600h]@20
      int v33; // [sp+120h] [bp-5FCh]@20
      __int16 v34; // [sp+124h] [bp-5F8h]@20
      char Dest; // [sp+21Ch] [bp-500h]@11
      char v36; // [sp+61Ch] [bp-100h]@11

      JLINKARM_EnableLog(sub_401050);
      JLINKARM_SetLogFile("C:\\JLink.log");
      JLINKARM_SetWarnOutHandler(sub_403190);
      v0 = (const char *)JLINKARM_OpenEx(sub_401050, sub_403170);
      if ( v0 )
      {
        sub_40E890(v0);
        sub_40E890((const char *)L"\n");
        sub_403160(0x5DCu);
        return 1;
      }
      sub_4039B0(&FileName);
      v3 = (int)"Default.ini";
      v2 = -1;
      do
      {
        if ( !v2 )
          break;
        v4 = *(_BYTE *)v3++ == 0;
        --v2;
      }
      while ( !v4 );
      v6 = ~v2;
      v9 = (const void *)(v3 - v6);
      v7 = v6;
      v8 = &FileName;
      v5 = -1;
      do
      {
        if ( !v5 )
          break;
        v10 = *v8++ == 0;
        --v5;
      }
      while ( !v10 );
      memcpy(v8 - 1, v9, v7);
      sprintf(&Dest, "projectfile = %s", &FileName);
      ((void (__cdecl *)(char *, char *, signed int))JLINKARM_ExecCommand)(&Dest, &v36, 256);
      sub_4039B0(&FileName);
      v12 = (int)"Default.c";
      v11 = -1;
      do
      {
        if ( !v11 )
          break;
        v13 = *(_BYTE *)v12++ == 0;
        --v11;
      }
      while ( !v13 );
      v16 = ~v11;
      v18 = (const void *)(v12 - v16);
      v17 = &FileName;
      v14 = v16;
      v15 = -1;
      do
      {
        if ( !v15 )
          break;
        v19 = *v17++ == 0;
        --v15;
      }
      while ( !v19 );
      memcpy(v17 - 1, v18, v14);
      v20 = (void *)sub_40E2C0(&FileName, 5);
      if ( v20 != (void *)-1 )
      {
        Dest = 0;
        sub_40E350(v20);
        v31 = dword_41A3B4;
        v33 = dword_41A3BC;
        v34 = word_41A3C0;
        v32 = dword_41A3B8;
        strcpy((char *)&v31 + strlen((const char *)&v31) - 1, &FileName);
        JLINKARM_ExecCommand(&v31, &Dest, 1024, v21);
      }
      JLINKARM_SetErrorOutHandler(sub_403170);
      JLINKARM_EnableLog(sub_4031B0);
      JLINKARM_SetInitRegsOnReset(0);
      sub_401130();
      sub_401090();
      if ( !JLINKARM_HasError() || JLINKARM_HasError() == -259 )
      {
        v22 = JLINKARM_GetSN();
        sub_40E890("S/N: %d \n", v22);
        JLINKARM_GetOEMString(&Dest);
        if ( strlen(&Dest) != 1 )
          sub_40E890("OEM: %s \n", &Dest);
        JLINKARM_GetFeatureString(&Dest);
        if ( strlen(&Dest) != 1 )
          sub_40E890("Feature(s): %s \n", &Dest);
      }
      if ( !JLINKARM_HasError() )
      {
        if ( sub_403830() )
        {
          v25 = sub_4038F0(&v27);
          if ( v25 != -1 )
          {
            sub_40E890("IP-Addr.: ");
            if ( v25 == 1 )
            {
              v26 = "No configuration received via DHCP\n";
            }
            else
            {
              sub_40E890("%d.%d.%d.%d", v27 >> 24, BYTE2(v27), BYTE1(v27), (unsigned __int8)v27);
              if ( v25 == 2 )
                v26 = " (DHCP)\n";
              else
                v26 = " (user assigned)\n";
            }
            sub_40E890(v26);
          }
        }
        if ( JLINKARM_GetEmuCaps(v24, v23) & 0x40 )
        {
          JLINKARM_TRACE_Control(20, &v28);
          sub_40E890("ETM support, Trace buffer size: %dKB\n", v28 >> 10);
        }
        if ( !JLINKARM_GetHWStatus(&v29) )
          sub_40E890(
            "VTarget = %d.%.3dV\n",
            ((unsigned int)(274877907 * (unsigned __int64)(unsigned __int16)v29 >> 32) >> 31)
          + ((signed int)(274877907 * (unsigned __int64)(unsigned __int16)v29 >> 32) >> 6),
            (unsigned __int16)v29 % 1000);
        JLINKARM_SetSpeed(100);
        if ( (_WORD)v29 > 0x1F4u )
        {
          if ( (unsigned __int8)sub_4031F0() )
          {
            JLINKARM_ClrError();
            JLINKARM_SetSpeed(4);
            sub_4031F0();
            return 0;
          }
          sub_403760();
        }
      }
      return 0;
    }


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-30 19:48
  • 签到天数: 981 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 12:35:17 | 显示全部楼层
    顶一个~~~~~~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-6-8 16:52
  • 签到天数: 783 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-7-20 15:59:38 | 显示全部楼层
    楼主这是研究JLink,准备自制吗。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-8-17 17:17:26 | 显示全部楼层
    加油楼主。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-8-17 17:17:58 | 显示全部楼层
    现在进行到什么程序了?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-1-16 09:24
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-1-16 09:16:04 | 显示全部楼层
    我去,大侠呀,还可以这么研究,长见识了,很有价值的资料。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 12:09 , Processed in 0.316675 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.