999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

張果

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

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

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

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

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

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

1 動態(tài)鏈接庫(DLL)實現(xiàn)

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

1.1 DLL開發(fā)過程

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

1.2 生成DLL

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

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

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

2.1 開發(fā)過程

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

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

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

2.2 程序發(fā)布

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

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

3 DLL反編譯

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

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

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

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

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

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

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

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

4 結(jié)語

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

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

參考文獻

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

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

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

主站蜘蛛池模板: 日韩精品欧美国产在线| 98精品全国免费观看视频| 老司机精品一区在线视频| 亚洲无码在线午夜电影| 综合久久五月天| 国产无吗一区二区三区在线欢| 精品少妇三级亚洲| 91亚瑟视频| 亚洲精品天堂在线观看| 2020国产在线视精品在| 91一级片| 亚洲成人免费在线| 亚洲男人的天堂久久香蕉| 妇女自拍偷自拍亚洲精品| 成人年鲁鲁在线观看视频| 伊人色综合久久天天| 亚洲二区视频| 亚洲精品无码AV电影在线播放| 日韩专区第一页| 欧美视频在线第一页| 一区二区三区四区在线| 日韩高清成人| 69免费在线视频| 久久精品日日躁夜夜躁欧美| 女人毛片a级大学毛片免费| 精品人妻无码区在线视频| 日韩欧美国产中文| 广东一级毛片| 亚洲伊人天堂| aⅴ免费在线观看| 尤物精品视频一区二区三区| 最新国语自产精品视频在| 一级毛片高清| 久久成人国产精品免费软件| 亚洲国产天堂久久综合226114| 精品国产成人高清在线| 18禁黄无遮挡网站| 91成人在线观看| 久久综合色天堂av| Aⅴ无码专区在线观看| 这里只有精品在线| 亚洲中文字幕手机在线第一页| 国产亚洲欧美在线中文bt天堂 | 在线观看无码a∨| 亚洲第一成人在线| 国产在线98福利播放视频免费 | 91蝌蚪视频在线观看| 亚洲男人在线天堂| 男女男免费视频网站国产| 国产成人综合久久精品下载| 日日噜噜夜夜狠狠视频| 无码乱人伦一区二区亚洲一| 国产成人高清精品免费软件| 久久精品丝袜高跟鞋| 欧美一级视频免费| 91福利国产成人精品导航| 久久精品亚洲中文字幕乱码| 亚洲欧美国产高清va在线播放| 日韩经典精品无码一区二区| 青青久在线视频免费观看| 国产精品女熟高潮视频| 在线无码私拍| 精品国产黑色丝袜高跟鞋| 伊人久久精品无码麻豆精品| 日韩亚洲综合在线| 婷婷伊人久久| 国产成人无码AV在线播放动漫| 欧美日韩一区二区三区四区在线观看 | 黄色a一级视频| 国产精品免费露脸视频| 久久中文字幕av不卡一区二区| 国产成人高清精品免费5388| 喷潮白浆直流在线播放| 亚洲日韩精品综合在线一区二区| 国产青青草视频| 色婷婷在线影院| 精品一区二区久久久久网站| 99久久人妻精品免费二区| 国产杨幂丝袜av在线播放| 国产亚洲男人的天堂在线观看| 香蕉视频在线观看www| 亚洲综合中文字幕国产精品欧美|