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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4667|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
久久美女性网| 亚洲欧洲三级| 欧美精品videossex88| 精品国产sm最大网站免费看| 欧美挠脚心视频网站| 欧美无砖砖区免费| 欧美精品1区2区| 91精品国产全国免费观看| 91麻豆精品国产91久久久| 欧美丰满少妇xxxxx高潮对白 | 欧美大陆一区二区| 国产乱码精品一区二区三区日韩精品 | 欧美另类z0zx974| 白白色免费视频| 中文国语毛片高清视频| 三级影片在线看| 日本熟女一区二区| 国产女主播喷水视频在线观看 | 黄色一二三区| 亚洲国产图片| 免费偷拍视频网站| 成人黄网大全在线观看| av高清日电影| 水莓100在线视频| 欧美三级黄网| 182在线播放| 成人在线免费av| 狂野欧美xxxx韩国少妇| 牛牛影视一区二区三区免费看| 欧美欧美黄在线二区| 99成人超碰| 国产精品普通话对白| 久热国产精品| 粉嫩13p一区二区三区| 成人免费av网站| 成人动漫视频在线| 国产suv精品一区| 影音先锋欧美激情| 清纯唯美亚洲经典中文字幕| 国产麻豆精品久久| 亚洲欧美在线专区| 视频一区免费在线观看| 国产精品白丝jk黑袜喷水| 久久色.com| 国产亚洲福利社区一区| 狠狠操狠狠色综合网| 欧美精品久久久久久久久老牛影院| 91精品欧美综合在线观看最新 | 亚洲激情av在线| 色视频一区二区| 日韩国产激情在线| 欧美精品videosex牲欧美| 秋霞午夜一区二区| 国产伦精品一区二区| 亚洲啪啪av| 人妻久久久一区二区三区| 黄大色黄女片18第一次| 在线免费看黄色片| 亚洲天堂黄色片| www.国产.com| 韩国av在线播放| 99色在线视频| 欧美在线观看在线观看| 色综合桃花网| 真实原创一区二区影院| 在线成人亚洲| 91天堂素人约啪| 色婷婷一区二区三区四区| 亚洲片av在线| 国产主播在线一区| 国产成人永久免费视频| 久久久老熟女一区二区三区91| 你懂的国产在线| 亚洲国产成人综合| 中文字幕在线影视资源| 亚洲最大网站| 91综合在线| 成人高清视频在线| 亚洲经典三级| 成人黄色在线看| 在线视频你懂得一区二区三区| 色偷偷偷亚洲综合网另类| 91传媒视频免费| 亚洲国产精品久久久久婷蜜芽| 天天躁夜夜躁狠狠是什么心态| 欧美成人一区二区视频| 免费色视频在线观看| 91中文在线| 亚欧洲精品视频在线观看| 捆绑变态av一区二区三区| 亚洲成人午夜电影| 久久精品91久久久久久再现| 久久精品五月婷婷| 无码国产精品一区二区高潮| 亚洲欧美另类在线视频| 91麻豆精品国产91久久| 暖暖日本在线观看| 小嫩嫩12欧美| 不卡一区中文字幕| 欧美一区二区日韩| 国产精品网站大全| 99爱视频在线| 日本少妇毛茸茸高潮| 午夜一级毛片| 精品三级久久| 亚洲福利电影| 亚洲国产美国国产综合一区二区| 日韩亚洲精品电影| 先锋影音一区二区三区| 中文字幕在线看高清电影| 亚洲国产综合一区| 亚洲成人影院在线观看| 国产精品一区二区三区美女| 国产精品一区二区男女羞羞无遮挡| 91搞黄在线观看| 国产成人啪精品视频免费网| 国产免费黄色av| 国产福利拍拍拍| 天天操天天舔| 国产成年精品| 国产成人免费视频精品含羞草妖精| 欧美电影一区二区三区| 国产中文欧美精品| 国产成人精品综合久久久久99| 国产精品久久久久久久久久久久久久久久| 免费白浆视频| 久久久久影视| 国产日韩综合av| 日本一区二区成人在线| 日韩av在线网站| 欧美日韩精品免费在线观看视频| 亚洲av无码国产精品久久| 中文在线视频观看| 天堂成人av| 国产日韩欧美一区在线| 在线观看亚洲精品| 亚洲专区国产精品| 蜜臀av一区二区三区有限公司| 手机在线理论电影| 美女搞黄视频在线观看| 男女男精品网站| 精品少妇一区二区三区视频免付费 | 国产做受高潮漫动| av天在线播放| 国产精品香蕉| 国产精品国产a级| 欧美激情精品久久久久久蜜臀| 免费av手机在线观看| 精品久久久久久久久久久国产字幕| 3dmax动漫人物在线看| 欧美人妖在线| 天天免费综合色| 91精品视频一区| 少妇光屁股影院| 高清视频国产| 国产精品毛片无码| 99re6这里只有精品视频在线观看| 国产亚洲精品美女久久久| 福利在线一区二区| 中文字字幕在线中文乱码| 激情小视频在线观看| 午夜久久黄色| 欧美日韩在线播| 久久久久久a亚洲欧洲aⅴ| 免费高清在线观看电视| 国产h色视频在线观看| 亚洲黄页网站| 亚洲成人一二三| 99re国产视频| 一区二区三区四区五区| 91短视频在线观看| 国产精品99久久精品| 在线一区二区三区| 免费在线国产精品| 国产污污视频在线观看| 日韩av地址| 亚洲女人av| 日韩av一卡二卡| 日韩精品在线视频免费观看| 国产精品无码免费播放| 中文字幕在线观看网站| 美腿丝袜亚洲一区| 日韩一区二区久久久| 亚洲人视频在线| 在线观看一区二区三区四区| 中国xxxx自拍视频| 亚洲女娇小黑人粗硬| 第一福利永久视频精品| 欧美亚洲一级二级| 中文字幕在线播放av| 三级资源在线| 99久久久精品| 国产不卡av在线| www.4hu95.com四虎| 在线观看av中文| 亚洲永久网站| 中文字幕日本欧美| 亚洲妇熟xx妇色黄蜜桃| ed2k情侣啪啪91av| 精品国产中文字幕第一页| 欧美亚洲图片小说| 今天免费高清在线观看国语| 精品人妻少妇AV无码专区| 亚洲综合在线电影| 亚洲欧美日韩系列| 免费久久久一本精品久久区| 国产精品成人无码| 日本蜜桃在线观看视频| 国产精品日韩成人| 国产一区自拍视频| 91精品国产色综合久久不8| 日本乱码一区二区三区不卡| 国产精品国产精品国产专区不蜜| 国产二区一区| 91精品国产色综合久久不8| 亚洲wwww| 午夜精品一区二区三区电影天堂 | 欧美日韩久久久一区| 国产精品一区二区在线观看| 一本色道久久88| av免费高清观看| japanese国产精品| 欧美性高潮床叫视频 | 一级特黄录像免费看| 2022成人影院| 99精品视频播放| 亚洲精品国产欧美在线观看| 免费av网站在线看| 久久精品理论片| 日韩在线精品视频| 中文字幕 日韩 欧美| 热re99久久国产精品| 99久久999| 亚洲乱码中文字幕综合| 亚洲精品欧美日韩| 欧美特级一级片| 日本在线一二三| 先锋a资源在线看亚洲| 亚洲男人7777| 一区二区三区韩国| 成人永久看片免费视频天堂| 国产精品久久久久久av福利软件| 日本三级小视频| 日韩不卡视频在线观看| 一本一本大道香蕉久在线精品 | 人人干人人爱人人爱| 国产精品久久| 欧美极品少妇xxxxx| 黄色一级片在线免费观看| 国产无遮挡裸体视频在线观看| 亚洲影视资源网| 国产freexxxx性播放麻豆| 日本三级电影在线播放| 亚洲欧美卡通另类91av| 欧美中文在线观看| 黄色av一区二区| 91久久精品无嫩草影院| 亚洲第一天堂av| 少妇光屁股影院| 亚洲奶水xxxx哺乳期| 夜夜精品浪潮av一区二区三区| 男人天堂手机在线视频| 狠狠色噜噜狠狠狠狠黑人| 免费精品视频最新在线| 91丝袜美腿美女视频网站| 亚洲第一精品网站| 99久久夜色精品国产亚洲96| 久久久久久久国产精品| 中文字幕日韩精品久久| 毛片网站网址| 国产精品资源在线| 欧美精品v日韩精品v国产精品| 欧美白人猛性xxxxx交69| 亚洲久久在线| 国产女人精品视频| 天堂网2014av| 在线播放日韩| 国产一区二区在线免费视频| 国产色在线视频| 成人av国产| 午夜精品一区二区三区在线视| 无码人妻av一区二区三区波多野| 国产 日韩 欧美 综合 一区| 中文字幕亚洲综合| 五月婷婷开心网| 日韩影视高清在线观看| 久久精品视频播放| 懂色av蜜臀av粉嫩av分享吧最新章节| 亚洲瘦老头同性70tv| 欧美第一淫aaasss性| 亚洲香蕉在线视频| 99久久.com| 国产精品69久久| 高清视频一区二区三区四区| 欧美一区=区| 国产经典一区二区三区| 免费观看欧美成人禁片| 激情都市一区二区| 亚洲一区二区免费视频软件合集 | 7777精品伊人久久久大香线蕉的 | 日本一区二区三区精品视频| 日本网址在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品久久成人免费观看| 国产视频二区| 亚洲人吸女人奶水| 久久久久久蜜桃一区二区| 亚洲成人三级| 欧美色手机在线观看| 亚洲v国产v欧美v久久久久久| 国精品产品一区| 日韩中文字幕在线观看| 夜夜狠狠擅视频| 国产精品vip| 成人18视频| xfplay资源站夜色先锋5566| 国产日韩精品一区| 欧美自拍小视频| 91蜜桃在线视频| 精品国产麻豆免费人成网站| 免费一级片视频| 精品免费视频| 亚洲永久免费观看| xxx电影网| 亚洲精品视频观看| 欧美双性人妖o0| 久久久加勒比| 欧美福利视频在线| 男人先锋资源| 波多野洁衣一区| 91蝌蚪视频在线观看| 高潮在线视频| 中文字幕亚洲天堂| 日本国产高清不卡| 国产suv精品一区二区三区| 91免费高清视频| 成人精品第一区二区三区| 99久久久久久99| 男人天堂999| 在线看一级片| 日韩精品中文字| 国产精品xxxxxx| 国产精品人人爽人人做我的可爱| 日韩影视精品| 国产精品视频二区三区| 91精品国产色综合久久不卡电影 | 777午夜精品免费视频| 国产亚洲欧美精品久久久www| 久久国产亚洲| 国产有色视频色综合| 亚洲欧美中文字幕在线观看| 精品日韩中文字幕| 欧美国产日韩在线观看成人 | 精品人妻伦一二三区久久| 另类小说欧美激情| 国产91美女视频| 欧美性猛交xxx高清大费中文| 理论片在线不卡免费观看| 影音先锋男人资源站| 91丨porny丨最新| wwwxxxx在线观看| 卡通动漫国产精品| 亚洲精品免费在线视频| 导航福利在线| 91精品婷婷国产综合久久竹菊| 日韩中文字幕高清| 奇米影视在线99精品| 久久婷婷五月综合色国产香蕉| 欧美一区 二区 三区| 欧美怡春院一区二区三区| 狠狠操视频网站| 色婷婷av久久久久久久| www亚洲视频| 国产一区二区伦理片| 国产资源中文字幕| 欧美日韩一本| 六十路精品视频| 秋霞影院午夜丰满少妇在线视频| 亚洲日本成人网| 在线天堂中文www官网| 国产精品视频你懂的| 欧美精品日韩在线| 亚洲成人中文| 免费黄色日本网站| jizz久久久久久| 国产精品丝袜久久久久久高清| 伊人资源视频在线| 日韩av在线天堂网| 伊人国产视频| 亚洲第一激情av| 特级西西444www大精品视频免费看| 国内成人精品2018免费看| 久久综合桃花网| 精品欧美久久| 免费观看亚洲视频| 久久亚洲人体| 国产女人水真多18毛片18精品| 91在线高清| 性欧美xxxx视频在线观看| 麻豆福利视频|