wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4715|回復: 0
收起左側

從單片機指針說到黑客程序

[復制鏈接]
ID:51472 發表于 2013-7-9 03:16 | 顯示全部樓層 |閱讀模式
2004年7月的一天,在電子BBS討論區上溜達,看到一個有趣的帖子,整個帖子內容如下:

純C51復位功能函數:一個大三學生,讓人又愛又怕

現單列復位部分如下:

main()

{

   unsigned char code rst[]={0xe4,0xc0,0xe0,0xc0,0xe0,0x32};  // 復位代碼

   (*((void (*)())(rst)))();  // 執行上一行代碼,將rst數組當函數調用

}

本來我告訴他嵌入如下代碼:

clr a

push acc

push acc

reti

結果他卻玩了前面哪一段,而數組rst[]中的內容恰恰是上面的匯編機器碼,他的做法是將rst數組的數據當作代碼保存,然后采用絕對地址方式指向該數組,將該數組中的代碼當作函數來運行。居然通過了!

我覺得有問題,我說即使如此,那絕對地址調用也應該寫成(*((void (*)())(&rst)))() 才對呀,結果他反駁說,那樣的話,rst的地址就會當成參數傳遞給這個絕對地址函數,而實際LJMP調用的地址并非rst的地址,而是一個不確定的地址。于是我按照自己的說法嘗試了一下,看看匯編結果,還真的是將rst的地址傳遞給了R1 R2,而絕對函數最終LJMP到了一個莫名其妙的地址上去了,死翹!

看來C真是一匹不容易駕馭的野馬,這個大三學生理解力在我之上,我30多歲的人了,干了這么多年還沒他的境界呢,唉,人家才學了幾天啊,翻了幾天書就這么厲害了,服了!

l         首先分析帖子的C語言代碼

第一句定義一個數組rst[],數組內數據就是完成復位功能的匯編機器碼,具體對應關系為:clr a == 0xe4、push acc == 0xc0,0xe0、reti ==0x32

第二句是一個函數指針的用法,函數指針用法稍微有點復雜,可參看本人著的書,:),以下為快速入門講解。

定義一個返回值是空函數指針的定義形式如下:

void (*p) ( )

當把函數指針賦值后,就能通過函數指針調用函數,調用形式如下,

      (*p) ( );

或等價的簡化形式:

p ( );

假設rst就是函數指針,則如下調用形式就可以令單片機復位再起。

(*rst ) ( );  

但可惜,rst不是函數指針,而是數組名,雖然兩者都是地址,但不可直接調用數組名。

如同把char型變量a賦值給int型變量b,(int) 表示強制類型轉換:

b = (int) a

函數指針的強制類型轉換公式如下(C語言的哲學是定義形式和使用一致):

(  (void (*)()  ) rst

這樣經過轉換后的rst就可以當作函數指針使用了,簡單的調用形式如下:

#define  K     (  (void (*)( )  ) rst

(*K) ( )

或:

(     * (  void (*)( )  )rst      ) ( );

這樣的語句就完成復位再啟功能了。類型轉換符()的優先級跟指針運算符*的優先級相同,二者的結合方向是自右至左,所以上述語句就能完成復位功能了。保險起見有些程序員常常喜歡再加個括號:

#define  K     (   (  (void (*)( )  ) rst   )

(*K) ( )



(     *(   (  void (*)( )  )rst   )    ) ( );



由于沒有輸入參數,上述復位代碼更嚴謹的寫法是:

#define  K     (   (  (void (*)(void )  ) rst   )

(*K) ( )



(     *(   (  void (*)(void )  )rst   )    ) ( );


l         關于帖子作者的解釋

千萬不要犯“&rst”形式的錯誤,對于一維數組而言,數組名rst就代表地址。以下二者等
價,更常用的是等式左邊的形式:

rst == &rst[0]

整個函數指針無所謂參數傳遞,只是把rst當作程序執行地址調用而已,那個學生的解釋也有問題。

還有一點必須提及,不是說能通過編譯,甚至生成正確代碼,就表示某語句一定是對的。對很復雜的語句,要考慮到編譯器不嚴格甚至出錯的可能性。

l         哈佛結構和一個蠕蟲病毒

請注意,定義數組rst[]時用了關鍵字code,這是C51特有的關鍵字,意味著把數組定義到程序空間。標準C是沒有關鍵字code的。

哈佛結構和普林斯頓結構:

哈佛結構——程序空間和存儲空間分開的。C51算是不太嚴格的哈佛結構——雖地址線分開,但數據線沒有分開。DSP是增強的哈佛結構。

PC電腦上奔騰CPU是普林斯頓結構——數據空間和程序空間統一編址。

如果數組rst[]數據的匯編機器碼是刪除文件的機器碼,這算不算是病毒?

曾經流行過一種蠕蟲病毒,其發作機理采取的就是將惡意代碼保存成文本文件,然后通過指針調用執行這個文本,很多殺毒程序也不會查詢文本文件。

程序也罷,數據也罷都是二進制形式,如果數據空間和程序空間是統一編碼的, 數據當然可以當作程序運行。

在這一點上,相對而言,哈佛結構的CPU安全性會好一點點。但嵌入式應用少有病毒,一般不用關心。



l         單片機復位的更好方法

帖子中匯編語言解釋如下:

clr a                      //清除ACC=0

push acc               //壓0到堆棧——8位

push acc               //再壓0到堆棧——再8位

reti                        //返回到0地址,從而執行。

帖子作者的這種復位方法比較麻煩,更加簡單的復位寫法是(摘自《C缺陷與陷阱》):

(     * (  void (*)( )  )0      ) ( );

本句的分析方法同上,但更加精煉,沒有多余的匯編語句。

上述復位的方法可稱為軟件復位。

軟件復位跟真正上電復位有很大差別:上電復位時大部分寄存器都有確定的復位值;軟件復位則只相當于從0地址開始執行而已,寄存器不會變為確定的復位值。
如果用戶要編程實現上電復位這種情況,在程序中不要踢看門狗即可。大部分單片機都有看門狗吧。

l         附錄

筆者精于DSP C24xx,但不太懂C51;讀者應能從函數指針的定義和引用中看出來,C語言的設計哲學是使用形式和定義形式一致,雖然這一點飽受質疑。

如果你覺得雞蛋好吃時,不必認識那只母雞;但如果你覺得本文不錯,請來筆者網站坐坐。

可來信免費轉載本文,請保持整篇文章的完整性,包括本句。            
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美日夜夜逼| 一二三区精品| 色鬼7777久久| 日韩性小视频| 日本一区二区三区四区五区| 国产精品宾馆在线精品酒店| 91久久国产婷婷一区二区| 精品国产欧美一区二区| 国产精品女同一区二区三区| 亚洲精品影院在线观看| 激情综合五月| av网站在线免费看推荐| 91传媒在线观看| 熟妇高潮一区二区三区| 久久国产在线观看| 风韵丰满熟妇啪啪区老熟熟女| 亚洲精品国产系列| 国产精品自产拍在线观看| 亚洲人高潮女人毛茸茸| 欧美色综合天天久久综合精品| 国产亚洲一区二区在线观看| 日韩主播视频在线| 久久精品国产亚洲夜色av网站| 久久人体av| 男男gaygays亚洲| 日本在线一二三| 3p乱日视频| 热99re久久精品精品免费| 亚洲 小说区 图片区| 日韩一区二区三区四区视频| 99中文字幕在线| 亚洲 高清 成人 动漫| 色婷婷精品国产一区二区三区| 国产精品免费一区| 久久久久这里只有精品| 国产一区二区三区在线看| 日韩一二三区不卡| 欧美色图天堂网| 欧美日韩中文在线| 一区二区三区在线视频免费| 久久这里都是精品| 国产一区二区免费看| 亚洲专区免费| 国产精品大片| 欧美在线不卡| 国产精品伦理久久久久久| 天天躁日日躁狠狠躁欧美| 四虎国产精品永久在线国在线| 第一中文字幕在线| 成年人网站在线| 国产福利第一视频在线播放| 三上悠亚一区| 开心丁香婷婷深爱五月| 天天摸天天做天天爽| 乳奴隷乳フ辱julia在线观看| 欧美一区二区三区久久综| 色吊丝中文字幕| 亚州视频一区二区三区| 亚洲精华国产精华精华液网站| 在线观看国产小视频| 中文在线第一页| 人人草在线观看| 欧美黄色一级大片| 欧美成人一区二区三区四区| 日本午夜视频在线观看| 国产精品成人aaaa在线| 久久中文字幕无码| 日韩视频免费观看高清| 亚洲另类欧美日韩| 日韩在线观看第一页| 日本视频在线观看免费| 久久久久久无码精品大片| 亚洲国产av一区二区三区| 青青国产在线视频| 一级黄色免费片| av 一区二区三区| a网站在线观看| 亚洲精品久久久蜜桃动漫 | 男人天堂成人网| 日韩视频在线观看视频| 亚洲欧美综合一区| 91网站在线观看免费| 欧美黑人经典片免费观看| 男女av免费观看| 欧美第一页浮力影院| 日韩av影视大全| 波多野结衣影院| 天堂在线中文视频| 久久精品波多野结衣| 在线观看中文字幕视频| 亚洲自拍第二页| 欧性猛交ⅹxxx乱大交| 中文字幕av中文字幕| 麻豆精品密在线观看| 好吊色免费视频| 好吊的妞视频这里都有| 青青久在线视频免费观看| 日本免费视频在线观看| 理论不卡电影大全神| 动漫一区二区三区| 精品在线手机视频| 亚洲免费激情| 国产精品亚洲一区二区三区妖精| 91在线视频网址| 亚洲五月六月丁香激情| 欧美三级韩国三级日本三斤| 亚洲精品一区二区精华| 欧美大奶子在线| 成人av在线亚洲| 日韩欧美三级一区二区| 国产无限制自拍| 日韩精品国产一区| 欧美三级日本三级| 99国产精品欲| 91.www| 三上悠亚在线观看二区| mm1313亚洲国产精品美女| 狂野欧美性猛交xxxx| heyzo久久| 免费国产亚洲视频| 国产欧美精品一区aⅴ影院| 精品久久久视频| 亚洲免费伊人电影在线观看av| 久久久女人电视剧免费播放下载| 亚洲www在线| 91免费国产精品| 性活交片大全免费看| 免费毛片一区二区三区| 欧洲精品久久一区二区| 天天碰日日操| 日韩一区二区视频在线观看| 97av自拍| 精产国产伦理一二三区| 久久精品久久久久久| 欧美精品一区二区三区国产精品| 国产精品普通话| 色吧亚洲视频| 57pao国产成永久免费视频| 亚洲精品自拍视频在线观看| 国产精品久久久国产盗摄| 91久久麻豆| √新版天堂资源在线资源| 国产91欧美| 综合精品一区| 99re这里都是精品| 欧美日韩五月天| 久久久伊人欧美| 一级二级三级欧美| 国产精品久久久久久亚洲av| 中文字幕国产在线观看| 妞干网福利视频| 日本动漫理论片在线观看网站| 黄色成人美女网站| 精品一区二区三区香蕉蜜桃| 亚洲成av人片在线| 日韩视频免费在线观看| 鲁鲁视频www一区二区| 日韩av自拍偷拍| 五月天激情四射| 开心激情五月婷婷| 毛片网站在线看| 99热精品久久| 国产精品素人一区二区| 国产丝袜精品第一页| 99re视频在线| 日韩高清一二三区| av一级黄色片| 中文官网资源新版中文第二页在线观看| 日韩精品免费观看视频| 久久国产精品毛片| 欧美日韩在线视频一区| 91精品国产91久久久久久最新| 特色特色大片在线| 99久久婷婷国产综合| 国产精品作爱| 国产高清视频色在线www| 欧美日韩ab| 一区二区三区四区精品在线视频| 日韩中文字幕在线看| 亚洲精品久久久久久一区二区| 精品人妻中文无码av在线| 成人久久在线| 日韩成人伦理| 一区二区91| 日本黄色一区二区| 国产一区深夜福利| 伊人成人免费视频| 丰满人妻av一区二区三区| 你懂的在线视频| 91日韩欧美| 亚洲国产视频网站| 97在线看免费观看视频在线观看| 久久精品无码中文字幕| 国产精品100| 传媒在线观看| 成人在线视频免费观看| 亚洲女同女同女同女同女同69| 九九久久久久99精品| 性欧美大战久久久久久久| 六月丁香婷婷综合| 黄页免费在线观看| 日韩一区自拍| 五月婷婷欧美视频| 国产欧美日韩丝袜精品一区| 特种兵之深入敌后| 在线观看精品视频一区二区三区| 手机电影在线观看| 久久久一二三| 日韩午夜av电影| 日韩av电影免费在线| 午夜国产小视频| 成人黄色免费电影| 中文字幕av一区二区三区人| 一区二区三区中文字幕电影 | 97se亚洲国产综合自在线| 国产亚洲精品美女久久久久| av日韩在线看| 91麻豆视频在线观看| 在线国产91| 肉色丝袜一区二区| 亚洲精品中文字幕女同| 日韩成人三级视频| 日批视频免费观看| 精品176二区| 麻豆精品视频在线观看免费| 日韩成人在线视频观看| 久久亚洲a v| av资源免费看| a天堂资源在线| 国产69精品一区二区亚洲孕妇| 色青青草原桃花久久综合| 国产精品亚洲αv天堂无码| 日批视频免费播放| 成人av观看| 91免费国产视频网站| 97成人在线视频| 欧美丰满少妇人妻精品| sesexxxx| 亚洲综合小说| 精品久久久久av影院| 波多野结衣之无限发射| 男人打飞机网站| 日韩久久一区| 亚洲影视在线播放| 久久99导航| 欧美黄色一级大片| av免费在线观| 成人网在线播放| 欧美洲成人男女午夜视频| 欧美大波大乳巨大乳| 友田真希在线| 久热精品视频| 欧美成人激情视频| jlzzjizz在线播放观看| 日本按摩中出| 奶水喷射视频一区| 日韩在线视频网站| 中国xxxx性xxxx产国| 加勒比一区二区三区| 国精品一区二区| 国产一区二区三区丝袜| 午夜性福利视频| 日本1区2区| 久久99久久久久久久久久久| 91精品国产成人| 精品欧美一区二区久久久久| 欧美性videos| 久久奇米777| 鬼打鬼之黄金道士1992林正英| 久久久久久久久久久影院| 国产精品原创| 一区二区三区日韩精品视频| 免费国产在线精品一区二区三区| 亚洲综合网av| 亚洲国产天堂| 欧美亚一区二区| 欧美二区在线视频| 涩涩网站在线观看| 欧美日韩蜜桃| 精品国产一区二区三区久久| free性中国hd国语露脸| 日本啊v在线| 91一区一区三区| 国产精品一区二区欧美| 国产浮力第一页| 久久亚洲道色| 精品少妇一区二区三区在线播放| 一级黄色特级片| 免费一级大片| 国产高清在线观看免费不卡| 国产综合久久久久久| 波多野结衣在线电影| 四虎影视成人精品国库在线观看| 欧美性猛交xxxx免费看久久久 | 99视频免费看| 精品一区二区三区中文字幕| 欧美日韩中文另类| 91激情视频在线| 成人伦理视频网站| 精彩视频一区二区三区| 91精品久久久久久久久久久久久久| 91精品国产综合久久久蜜臀九色| 精品成人av| 欧美精品在线一区二区三区| 色噜噜狠狠一区二区| 调教视频在线观看| 2021国产精品久久精品| 欧美一区二区三区在线免费观看| 中文在线视频观看| 国产精品99免费看| 欧美亚洲在线视频| 国产又粗又猛又黄视频| 欧美特黄不卡| 国产丝袜视频一区| 欧美xxxooo| 视频一区在线免费看| 在线91免费看| 呦呦视频在线观看| 91麻豆免费在线视频| 天天色天天爱天天射综合| 久久黄色免费看| 毛片网站在线观看| 亚洲精品中文在线影院| 麻豆av免费在线| 最近中文字幕mv免费高清在线| 久久久亚洲精品石原莉奈 | 69精品小视频| 一级黄色免费看| 日韩精品欧美| 91po在线观看91精品国产性色 | 欧美亚洲国产bt| 中国极品少妇xxxx| 人妖欧美1区| 欧美日韩高清一区二区不卡| 在线xxxxx| 久草免费在线视频| 日本乱人伦一区| 奇米777第四色| 草草在线视频| 精品日韩在线一区| 小泽玛利亚一区| 国产一区二区三区精品在线观看| 亚洲精品成人久久久| 97成人资源站| 国产精品欧美大片| 久久99亚洲热视| 国产美女主播在线观看| 欧美久久九九| 99在线视频免费观看| 超碰91在线| 91首页免费视频| 成年人网站免费视频| 国外av在线| 欧美亚洲国产一区二区三区 | 免费网站www在线观看| 亚洲天堂久久久久久久| 最新免费av网址| 国产美女情趣调教h一区二区| 91精品在线观看入口| 五月天免费网站| 成人av综合网| 97视频免费在线看| 性xxxfllreexxx少妇| 久久国产综合精品| 中文字幕一区二区三区精彩视频 | 国产日韩欧美成人| 国产大学生自拍视频| 91在线观看地址| 国产视频1区2区3区| 91九色国产在线播放| 日韩国产欧美精品一区二区三区| 国产性xxxx高清| 欧美激情无毛| 久久伦理网站| 在线视频国产三级| 欧美亚洲动漫精品| 国产亚洲精品女人久久久久久| 精品视频免费在线观看| 92看片淫黄大片看国产片| 成年免费插网| 夜夜嗨av一区二区三区| 熟女少妇一区二区三区| 6080亚洲理论片在线观看| 亲子乱一区二区三区电影| 九九这里只精品视在线99| 久久久亚洲精品一区二区三区 | 一个人在线视频免费观看www| 91丨九色丨蝌蚪丨老版| 女同激情久久av久久| 四虎影视4hu4虎成人| 欧美精品九九久久| 欧美e片成人在线播放乱妇| 久久蜜桃av一区精品变态类天堂| 黑人巨大猛交丰满少妇| 欧洲一区在线| 国产精品直播网红| 777永久免费网站国产| 色综合天天性综合| 久久免费视频精品| 激情av一区|