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

        ?

        動(dòng)態(tài)鏈接庫編譯與反編譯的研究與實(shí)現(xiàn)

        2019-06-29 10:36:04張果
        中國科技縱橫 2019年11期

        張果

        摘 要:本文通過編寫簡(jiǎn)單的可執(zhí)行程序,引用兩個(gè)不同語言編寫的DLL。然后再進(jìn)行反編譯DLL,在可執(zhí)行文件中重新引用,實(shí)現(xiàn)DLL反編譯成功被程序多次引用的效果。

        關(guān)鍵詞:可執(zhí)行程序;動(dòng)態(tài)鏈接庫;編譯;反編譯

        中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)11-0019-02

        可執(zhí)行程序,是可自行解壓縮文件的集合,包括安裝的所有文件。運(yùn)行可執(zhí)行文件,可將軟件的所有文件釋放到硬盤上,完成修改注冊(cè)表,修改系統(tǒng)設(shè)置、創(chuàng)建快捷方式等工作。在Windows中,許多應(yīng)用程序并不是一個(gè)完整的可執(zhí)行文件,它們被分割成一些相對(duì)獨(dú)立的動(dòng)態(tài)鏈接庫(DLL文件),放置于系統(tǒng)中。

        DLL中存放各類程序的函數(shù)(子過程)實(shí)現(xiàn)過程,當(dāng)程序需要調(diào)用函數(shù)時(shí)需要先載入DLL,取得函數(shù)的地址,最后相應(yīng)的DLL會(huì)被調(diào)用。使用DLL的好處是程序不需要在運(yùn)行之初加載所有代碼,且通過使用DLL,程序可實(shí)現(xiàn)模塊化,由相對(duì)獨(dú)立的組件組成。DLL有助于促進(jìn)模塊式程序的開發(fā),可開發(fā)進(jìn)行模塊式體系結(jié)構(gòu)的程序,因此在重復(fù)使用DLL時(shí),研究將DLL如何進(jìn)行反編譯重復(fù)利用顯得特別重要。

        本文基于ASP.NET技術(shù),.NET Framework框架,Visual studio 2010 集成環(huán)境,C#和Visual Basic語言進(jìn)行開發(fā)。

        1 動(dòng)態(tài)鏈接庫(DLL)實(shí)現(xiàn)

        文中C#類實(shí)現(xiàn)的DLL功能為圖像色彩反轉(zhuǎn)方法和獲取系統(tǒng)當(dāng)前時(shí)間方法,Visual Basic實(shí)現(xiàn)的是將輸入的原字符串進(jìn)行逆序的方法和將原字符串進(jìn)行大寫轉(zhuǎn)換的方法。

        1.1 DLL開發(fā)過程

        本地打開Visual studio 2010,選擇新建項(xiàng)目,選擇Visual C#,選擇.NET Framework 4.0框架,選擇類庫,生成相應(yīng)的解決方案,打開類,編寫該DLL所要實(shí)現(xiàn)的功能。因本文著重實(shí)現(xiàn)如何編寫DLL,如何在應(yīng)用程序中引用DLL,然后反編譯DLL,驗(yàn)證再次被應(yīng)用程序引用是否成功,因此,DLL功能及應(yīng)用程序功能相對(duì)簡(jiǎn)單。

        1.2 生成DLL

        DLL功能編寫完成后,選擇Visual Studio工具欄中的生成,選擇其下的生成解決方案,在該解決方案的Debug目錄下可以找到生成的DLL,該DLL可被應(yīng)用程序直接引用。

        2 可執(zhí)行程序?qū)崿F(xiàn)

        可執(zhí)行程序引用DLL的方法,將系統(tǒng)時(shí)間、圖像色彩反轉(zhuǎn)、字符串逆序通過界面展示出來。

        2.1 開發(fā)過程

        本地打開Visual Studio 2010,新建項(xiàng)目,選擇Visual C#語言,選擇Windows窗體應(yīng)用程序,.NET Framework 4.0框架,確定,解決方案建立成功,引用之前已生成的兩個(gè)DLL。

        新建Form1,F(xiàn)orm2兩個(gè)設(shè)計(jì)窗口,界面化實(shí)現(xiàn)兩個(gè)dll功能,在后臺(tái)cs代碼中引用命名空間using CsharpDll;using VBasicDll。界面如圖1所示。

        運(yùn)行可執(zhí)行程序,界面能夠正確顯示當(dāng)前系統(tǒng)時(shí)間、圖片顏色反轉(zhuǎn)及字符串逆序的功能,界面如圖2所示。

        2.2 程序發(fā)布

        應(yīng)用程序通運(yùn)行測(cè)試功能正確顯示,將該應(yīng)用程序發(fā)布為可執(zhí)行的應(yīng)用程序,安裝在個(gè)人計(jì)算機(jī)上。應(yīng)用程序發(fā)布主要分以下幾個(gè)步驟:

        (1)在VS中選擇“新建項(xiàng)目”(“其他項(xiàng)目類型”(“Visual Studio Installer”(“安裝項(xiàng)目”。(2)確定后,添加要發(fā)布的應(yīng)用程序、設(shè)置應(yīng)用程序的安裝時(shí)所必備的系統(tǒng)環(huán)境、設(shè)置程序安裝時(shí)的路徑及其他信息。(3)應(yīng)用程序發(fā)布基本設(shè)置完成之后,選擇“生成”(“生成解決方案”,若成功,則顯示生成成功,成功生成解決方案后在debug文件夾中有需要的安裝包及系統(tǒng)所必備的環(huán)境下載,到此應(yīng)用程序發(fā)布完成。

        3 DLL反編譯

        應(yīng)用程序引用的DLL,經(jīng)過一段時(shí)間后,不能清晰記憶該DLL中所包含的方法,因此需要將DLL進(jìn)行反編譯。本文針對(duì).NET程序且程序沒有使用混淆技術(shù)的情況下,使用Reflector將.NET程序集中的中間語言反編譯成C#或者Visual Basic代碼。

        3.1 反編譯代碼實(shí)現(xiàn)

        Reflector工具安裝完成后,選擇我們反編譯后的語言為C#,.NET框架為.NET 4.0。

        在File菜單下選擇“open assembley”,選擇需要反編譯的DLL,加載后顯示DLL中命名空間、類及方法的層級(jí)關(guān)系,也可直接雙擊打開查看方法。選中要導(dǎo)出的DLL,選擇“Export Source Code”,將源代碼導(dǎo)出到默認(rèn)的目錄,若導(dǎo)出成功,則會(huì)有相應(yīng)的提示。

        反編譯成功后,打開生成的項(xiàng)目文件,可以看到不管是C#語言還是Visual Basic語言,都按照Reflector所配置的導(dǎo)出語言C#生成。將導(dǎo)出的項(xiàng)目文件使用Visual Studio 2010打開,C#語言反編譯前后與源碼一樣,Visual Basic語言反編譯后按照C#語言語義進(jìn)行了重組。Visual Basic反編譯前后代碼對(duì)照如圖3所示。

        3.2 可執(zhí)行程序重引用反編譯DLL

        將DLL反編譯后的類文件編輯再重新生成DLL,在可執(zhí)行程序中重引用后,運(yùn)行可執(zhí)行程序,可得到正確的效果,在反編譯后的DLL中,加入了顯示當(dāng)天星期的方法和將字符轉(zhuǎn)換為大寫的方法。界面如圖4所示。

        至此,編譯DLL,引用DLL,反編譯DLL及被重新引用這一過程全部實(shí)現(xiàn),并得到驗(yàn)證,可執(zhí)行程序運(yùn)行后顯示正確結(jié)果。

        4 結(jié)語

        本文以.NET Framework為框架,以Visual Studio2010為開發(fā)環(huán)境,分別采用Visual c#和Visual Basic為開發(fā)語言。編寫簡(jiǎn)單的類庫生成DLL,編寫簡(jiǎn)單的可執(zhí)行程序,該可執(zhí)行程序中調(diào)用DLL,再通過Reflector工具反編譯DLL,反編譯的DLL生成的源碼使用Visual Studio2010打開重新編輯,生成相應(yīng)的DLL,在可執(zhí)行程序中再次引用的時(shí)候,該反編譯后的DLL能被正確引用,得到相應(yīng)的結(jié)果。

        本文驗(yàn)證了Reflector工具能夠反編譯DLL,且能再次被可執(zhí)行應(yīng)用程序正確引用,但該Reflector工具只針對(duì).NET Framework框架開發(fā)的DLL,對(duì)其他框架的類及DLL不適用。后續(xù)查找及研究實(shí)現(xiàn)一款能對(duì)其他框架開發(fā)的DLL反編譯工具,并學(xué)習(xí)其他框架開發(fā)工具對(duì)反編譯的DLL進(jìn)行驗(yàn)證。

        參考文獻(xiàn)

        [1] Christian Nagel,Jay Glynn,Morgan Skinner.C#高級(jí)編程第八版[M].北京:清華大學(xué)出版社,2013.

        [2] Benjamin Perkins,Jacob Vibe Hammer.深入理解C#第三版[M].北京:人民郵電出版社,2014.

        [3] Daniel M.Solis.圖靈程序設(shè)計(jì)叢書:C#圖解教程第四版[M].北京:人民郵電出版社,2013.

        久热国产vs视频在线观看| 中文字幕亚洲乱码熟女在线| 色婷婷久久综合中文久久一本| 国产精品国产三级国产av品爱| 精品www日韩熟女人妻| 久草视频福利| 亚洲一区极品美女写真在线看| 亚洲乱码中文字幕视频| 久久天天躁狠狠躁夜夜av| 亚洲av成人一区二区三区av| 亚洲日本VA午夜在线电影| 一本大道久久a久久综合精品| 一女被多男玩喷潮视频| 国产精品污www一区二区三区| av草草久久久久久久久久久| sm免费人成虐漫画网站| 天堂国产一区二区三区| 中文天堂在线www| 91在线无码精品秘 入口九色十| 国产精品老熟女乱一区二区| 日本午夜精品一区二区三区电影| 人人妻人人澡人人爽人人精品电影| 国产好片日本一区二区三区四区| 亚洲免费一区二区三区四区| 亚欧免费无码aⅴ在线观看| 99视频这里有精品| 亚洲成人免费久久av| 免费a级毛片又大又粗又黑| 国产亚洲精品久久久久久| 色综合色综合久久综合频道| 亚洲精品在线一区二区| 大地资源网高清在线播放| 精品中文字幕久久久人妻| 日韩精品极品在线观看视频| 国产一区国产二区亚洲精品| 94久久国产乱子伦精品免费| 精品少妇人妻成人一区二区| 国产成人亚洲系列毛片| 国产农村熟妇videos| 麻豆精品网站国产乱子伦| 亚洲精品在线一区二区三区|