亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VB引擎反匯編技術(shù)的軟件破解方法及防范策略

        2015-09-16 08:22:10周顯春
        現(xiàn)代計(jì)算機(jī) 2015年12期
        關(guān)鍵詞:序列號(hào)靜態(tài)代碼

        周顯春

        基于VB引擎反匯編技術(shù)的軟件破解方法及防范策略

        周顯春

        (三亞學(xué)院,三亞572022)

        通過(guò)分析基于反匯編技術(shù)對(duì)保護(hù)軟件的破解步驟,提出一些增加軟件破解難度的方法。這些方法在一定程度上彌補(bǔ)現(xiàn)在保護(hù)技術(shù)的不足,從而使得破解軟件增加難度,加強(qiáng)軟件的保護(hù)。

        軟件保護(hù);VB;反匯編;軟件破解技術(shù)

        1 Visual Basic文件的基本特征

        VB5之前都是典型的解釋語(yǔ)言(VB3、VB4),使用專用的VB反編譯器很容易對(duì)exe、dll.ocx等文件的反匯編。VB5和VB6則不同,采用不同的編譯模式,分為自然編譯(Native-Complie)和偽編譯(Pcode-Compile)兩種。前者通過(guò)VB編譯器將高級(jí)語(yǔ)言轉(zhuǎn)換成目標(biāo)程序(OBJ),然后通過(guò)連接程序(LINK)生成可執(zhí)行程序(exe)。后者則先使用編譯器把高級(jí)語(yǔ)言轉(zhuǎn)換成某種通過(guò)虛擬機(jī)能夠在本地機(jī)器能夠解釋、執(zhí)行的代碼。這種編譯方式與Java、PowerBuilder等的編譯實(shí)質(zhì)是相同。使用P Code的好處是能夠跨平臺(tái)使用。

        VB文件都使用MSVBVM60.dll,Oleaut32.dll。如果要深入研究VB,可以用使用靜態(tài)反匯編軟件IDA對(duì)其反匯編,掌握常用函數(shù)的使用方法。在MSVBVM60.dll中包含的函數(shù)名總是用_vba或rtc開(kāi)頭,而Oleaut32. dll則以var開(kāi)頭。函數(shù)的參數(shù)一般采用_stdcall方式,按照函數(shù)名從右到左理解。

        2 反匯編技術(shù)介紹

        對(duì)可執(zhí)行文件進(jìn)行分析的方法主要分為兩種:靜態(tài)分析法和動(dòng)態(tài)分析法。

        2.1靜態(tài)分析法

        靜態(tài)分析法是在不執(zhí)行代碼的情況下,對(duì)代碼進(jìn)行分析的方法。它是通過(guò)文件的外部特征,獲取文件的類型、大小、PE頭等信息。此外,使用反匯編工具,例如:IDA,或者VB的專用反匯編器VB Decompiler Pro,現(xiàn)在的版本是9.9。在后面的案例中,使用VB Decompiler Pro,理由是它是基于VB引擎,使用方法簡(jiǎn)單、效果好。當(dāng)然,僅僅依靠靜態(tài)分析還不足以解決復(fù)雜的問(wèn)題,但是這些信息可以作為動(dòng)態(tài)分析的重要資料,對(duì)加快動(dòng)態(tài)分析的進(jìn)程非常有用。

        2.2動(dòng)態(tài)分析法

        動(dòng)態(tài)分析法是在程序執(zhí)行的過(guò)程中對(duì)代碼進(jìn)行分析的一種方法,它是采用調(diào)試技術(shù)來(lái)分析程序的內(nèi)部結(jié)構(gòu)與動(dòng)作原理?,F(xiàn)在最常用的動(dòng)態(tài)反匯編工具有: OllDb、WinDbg、X64_dbg。其中OllDbg只能對(duì)32位的可執(zhí)行文件進(jìn)行動(dòng)態(tài)分析,權(quán)限的等級(jí)為Ring 3,Windbg在Windows平臺(tái)下,強(qiáng)大的用戶態(tài)和內(nèi)核態(tài)調(diào)試工具,WinDbg不僅可以調(diào)試應(yīng)用程序,還可以進(jìn)行Kernel Debug,權(quán)限等級(jí)為Ring 0,缺點(diǎn)是圖形化功能簡(jiǎn)單,命令功能強(qiáng)大,不容易入門。x64_dbg可以看作是OllDb的繼續(xù)開(kāi)源開(kāi)發(fā),可以調(diào)試64位應(yīng)用程序,現(xiàn)在功能還不是很強(qiáng)大。

        3 軟件破解的方法

        在大多數(shù)情況下,破解應(yīng)用程序的方法是先通過(guò)靜態(tài)分析方法收集代碼的有用的信息,然后進(jìn)行動(dòng)態(tài)分析。為了更好地理解破解的過(guò)程,為下一步的軟件知識(shí)產(chǎn)權(quán)保護(hù)打下扎實(shí)的基礎(chǔ),下面舉例進(jìn)行說(shuō)明。

        由于下面需要破解的應(yīng)用程序是VB的32位程序,文件名abex'crackme#2,因此靜態(tài)分析采用VB的專用反匯編器VB Decompiler Pro,動(dòng)態(tài)分析采用OllD-bg。

        在進(jìn)行分析之前,最好執(zhí)行要被破解的軟件,了解其大致功能。主界面如圖1所示。

        圖1 軟件運(yùn)行界面

        首先用VB Decompiler Pro打開(kāi)abex'crackme#2. exe文件,完成靜態(tài)反匯編??梢垣@得如下有用信息: VERSION 5.00

        Begin VB.Form Form1

        Caption="abex 2nd crackme"

        BackColor=&H0&

        ScaleMode=1

        AutoRedraw=False

        FontTransparent=True

        BorderStyle=0'None

        Icon="Form1.frx":0

        LinkTopic="Form1"

        ClientLeft=0

        ClientTop=0

        ClientWidth=4140

        ClientHeight=2295

        StartUpPosition=2'CenterScreen

        Begin CommandButton Command3

        Caption="&Check"

        Left=3000

        Top=600

        Width=975

        Height=375

        TabIndex=7

        End

        ……(其余代碼省略)

        通過(guò)這些信息,可以知道該程序執(zhí)行后情況有充分的了解,有一個(gè)對(duì)話框,對(duì)話框上有兩個(gè)標(biāo)簽、文本框,三個(gè)按鈕等詳細(xì)信息,與沒(méi)有破解之前運(yùn)行時(shí)的主界面完全一致。其中,最重要是獲得三個(gè)按鈕的反匯編的偽代碼,以check按鈕為例:

        Private Sub Command3_Click()'402ED0

        loc_00402F98:var_88=Text1.Text

        loc_00402FE2:var_74=var_88

        loc_0040300F:var_9C=Len(var_74)

        loc_00403026:If(var_9C〈4)=0 Then GoTo loc_004030F9

        loc_00403066:var_E4="Error!"

        loc_0040307E:var_D4="Please enter at least 4 chars as name!"

        loc_004030D0:var_64=MsgBox("Please enter at least 4 chars as name!",0,"Error!",var_BC,var_CC)

        loc_004030F9:'Referenced from:00403026

        loc_00403119:var_9C=Len(var_74)

        loc_00403130:If(var_9C〈4)〈〉0 Then GoTo loc_004034F3

        loc_0040318B:For var_24=1 To 4 Step 1

        loc_00403197:

        loc_00403199:If var_134=0 Then GoTo loc_004032A5

        loc_00403213:var_54=Asc(CStr(Mid(var_74,CLng(var_24), 1)))

        loc_00403286:var_44=var_44&Hex(var_54+100)

        loc_0040329A:Next var_24

        loc_004032A0:GoTo loc_00403197

        loc_004032A5:'Referenced from:00403199

        loc_004032CB:var_88=Text2.Text

        loc_00403313:var_34=var_88

        loc_00403332:If(var_44=var_34)=0 Then GoTo loc_00403408

        loc_004033DD:var_64=MsgBox("Yep,this key is right!",0, "Congratulations!",var_BC,var_CC)

        loc_00403406:GoTo loc_00403413

        loc_00403408:'Referenced from:00403332

        loc_00403413:'Referenced from:00403406

        loc_00403424:If(var_44=var_34)=0 Then GoTo loc_004034F1

        loc_004034C8:var_84=MsgBox("Nope,this serial is wrong!",0,"Wrong serial!",10,10)

        loc_004034F1:'Referenced from:00403424

        loc_004034F3:'Referenced from:00403130

        loc_004034FB:GoTo loc_0040353D

        loc_0040353C:Exit Sub

        loc_0040353D:'Referenced from:004034FB

        End Sub

        查看獲得反匯編的偽代碼,結(jié)合先前對(duì)未注冊(cè)軟件的運(yùn)行情況就很容易就知道loc_004033DD處的代碼是輸入文本框信息正確時(shí)的提示信息。切換到匯編窗口,查看提示信息產(chǎn)生之前,核對(duì)輸入用戶名和序列號(hào)正確與否的代碼,根據(jù)這些信息,可以采用兩種方法進(jìn)行破解。

        第一種方法,獲取用戶名和序列號(hào)的關(guān)系。查看地址loc_00403329處的代碼:

        loc_00403321:lea edx,var_44

        loc_00403324:lea eax,var_34

        loc_00403327:push edx

        loc_00403328:push eax

        loc_00403329:call[00401058h];@(%StkVar2=%StkVar1) '__vbaVarTstEq

        loc_0040332F:test ax,ax

        由此可知,真正核對(duì)信息真?zhèn)蔚牡刂窞椋簂oc_00403329,其2個(gè)參數(shù)地址在其上方。要獲得正確的序列號(hào),只要知道這兩個(gè)參數(shù)的值就可以了。獲得如此重要信息之后,使用Ollydbg打開(kāi)abex'crackme#2. exe,goto 00403329。如下圖2。

        圖2 信息核對(duì)函數(shù)的匯編代碼

        查看上圖,在地址00403329處設(shè)置斷點(diǎn),開(kāi)始動(dòng)態(tài)調(diào)試。在第一個(gè)文本框中隨意輸入36548,第二個(gè)文本框中輸入123456987,單擊check按鈕,當(dāng)程序執(zhí)行到斷點(diǎn)后,可以獲得參數(shù)的地址及值,如圖3~4。

        圖3 信息核對(duì)函數(shù)的參數(shù)

        由上圖可知,當(dāng)輸入用戶名為36548時(shí),序列號(hào)為979A9998。

        圖4 信息核對(duì)函數(shù)的參數(shù)實(shí)際值

        第二種方法,繞過(guò)用戶名和序列號(hào)核對(duì)的過(guò)程,直接顯示提示信息。查詢與信息核對(duì)有關(guān)的匯編代碼。

        loc_00403327:push edx

        loc_00403328:push eax

        loc_00403329:call[00401058h];@(%StkVar2=%Stk-Var1)'__vbaVarTstEq

        loc_0040332F:test ax,ax

        loc_00403332:jz 00403408h

        由以上代碼可知,如果核對(duì)信息不正確,就會(huì)執(zhí)行地址:loc_00403332,即修改此處代碼為NOP,就可以破解。在Ollydbg中,goto 00403332,修改為NOP,如下圖5~6。

        圖5 信息核對(duì)不相符的轉(zhuǎn)移匯編代碼

        圖6 修改后的匯編代碼

        采用同樣的方法,可以破解該軟件的加密方法,關(guān)鍵代碼地址為:loc_0040318B~loc_0040329A。

        4 軟件保護(hù)技術(shù)

        雖然基于軟件的加密殼保護(hù)和基于硬件的加密鎖保護(hù)都是不錯(cuò)的軟件保護(hù)技術(shù),但是這些方法太過(guò)于流行,許多人對(duì)其有深入的了解,反而容易被破解。因此,根據(jù)自己軟件的特點(diǎn)實(shí)現(xiàn)自己的獨(dú)特保護(hù)方法才是最好的。例如:采用試用版和正式版分開(kāi)的方法。試用版不具有正式版的核心功能,不是簡(jiǎn)單的屏蔽,而是沒(méi)有相應(yīng)的代碼。加密方法不要過(guò)于簡(jiǎn)單,創(chuàng)立文件的副本,進(jìn)行文件完整性檢查[1],加殼、VM保護(hù)、網(wǎng)絡(luò)驗(yàn)證、加密鎖、反調(diào)試跟蹤[2],等等。

        針對(duì)本文所采用的破解方法,可以進(jìn)一步完善自己的軟件。如,為了防范自己的軟件被第一種破解方法破解,可以對(duì)核心源代碼進(jìn)行加密,使之成為密文,加密的方法可以采用比較成熟的密碼學(xué)算法,為了防范自己的軟件被第二種破解方法,既可以對(duì)核心的代碼進(jìn)行加密,也可以對(duì)核心代碼進(jìn)行完整性檢查,這些措施都可以很容易做到。

        5 結(jié)語(yǔ)

        破解已有軟件,并不是為了商業(yè)目的。軟件安全是信息安全的重要組成部分,它涉及到軟件的加密、解密、逆向分析、漏洞分析、病毒分析等。掌握與軟件安全相關(guān)的知識(shí),既可以通過(guò)獲取別人軟件開(kāi)發(fā)的思想、精髓,提高自己的軟件開(kāi)發(fā)能力,也可以通過(guò)掌握相關(guān)的知識(shí),來(lái)增強(qiáng)自己軟件的反匯編能力。道高一尺魔高一丈,軟件的逆向分析與反逆向分析應(yīng)該是一個(gè)永恒話題。

        [1]陳闖.基于反匯編技術(shù)的軟件破解及其應(yīng)對(duì)方法[J].畢節(jié)學(xué)院學(xué)報(bào),2008,26(4)

        [2]李承遠(yuǎn).武傳海譯.逆向工程核心原理.人民郵電出版社,2014.5

        Protection of Software;VB;Anti-Assemble;Crack Software Technology

        Software Cracking Method and Prevention Strategies Based on VB Engine Disassembly Technology

        ZHOU Xian-chun

        (Sanya University,Sanya 57022)

        Analyses the steps of cracking the protected software based on anti-assemble of VB,presents the methods,which make up for today's protection technology to a certain extent.Thus increases the degree of difficulty to crack software,strengthens the protection of the software.

        1007-1423(2015)12-0058-04

        10.3969/j.issn.1007-1423.2015.12.013

        周顯春(1974-),男,湖南漢壽人,碩士研究生,講師,網(wǎng)絡(luò)工程師,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)技術(shù)

        2015-03-12

        2015-04-01

        猜你喜歡
        序列號(hào)靜態(tài)代碼
        靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
        recALL
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        機(jī)床靜態(tài)及動(dòng)態(tài)分析
        具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
        50t轉(zhuǎn)爐靜態(tài)控制模型開(kāi)發(fā)及生產(chǎn)實(shí)踐
        上海金屬(2013年6期)2013-12-20 07:57:59
        PP助手教你辨別翻新iPhone5小白不再中招
        91精彩视频在线观看| 欧美黑人又大又粗xxxxx| 少妇无码av无码一区| 亚洲第一网站免费视频| 在线一区二区三区视频观看| 午夜男女靠比视频免费| 内射人妻少妇无码一本一道| 亚洲国产区男人本色| 中文字幕有码高清| 色婷婷精品午夜在线播放| 在线播放真实国产乱子伦| 蜜芽亚洲av无码精品色午夜| 无码国模国产在线观看| 99热视热频这里只有精品| 日本高清免费播放一区二区| 精品天堂色吊丝一区二区| 国产熟女露脸大叫高潮| 一本一本久久久久a久久综合激情| 国产盗摄一区二区三区av| 无码国产成人午夜电影在线观看| 亚洲午夜福利在线观看| 久久精品国产屋| 国产一级黄色片在线播放| 久久天天躁狠狠躁夜夜躁2014| 色吧综合网| 亚洲天堂av大片暖暖| 精品一区二区三区四区国产| 亚洲日本在线电影| 日本高清不在线一区二区色| 午夜少妇高潮在线观看视频| 午夜福利理论片在线观看| 国模精品无码一区二区二区| 亚洲av一二三又爽又爽又色| 国产精品激情自拍视频| 亚洲精品无码乱码成人| 亚洲精品国产二区三区在线| 久久久亚洲免费视频网| 97无码免费人妻超级碰碰夜夜| av一区无码不卡毛片| 91中文在线九色视频| 亚洲av无码国产精品色午夜字幕|