国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      棧溢出位置的檢測方法及裝置的制造方法

      文檔序號:8395805閱讀:585來源:國知局
      棧溢出位置的檢測方法及裝置的制造方法
      【技術領域】
      [0001] 本公開涉及終端設備開發(fā)技術領域,尤其涉及棧溢出位置的檢測方法及裝置。
      【背景技術】
      [0002] 隨著智能手機的普及,近幾年掀起了移動開發(fā)的熱潮,特別是android系統(tǒng)的開 源,使得各個廠商的開發(fā)手機系統(tǒng)的成本變得很低,同時也引來的越來越多的開發(fā)人員進 入到這一嵌入式領域開發(fā)平臺,嵌入式領域主要是基于arm架構的嵌入式開發(fā)。arm編程以 及調試技術已經越來越成為當今移動開發(fā)領域的核心競爭力。快速地開發(fā)以及調試程序是 每個移動開發(fā)者迫切想要掌握的技能。
      [0003] 棧溢出問題在程序開發(fā)中十分常見,然而,編程人員一直都沒有很好的解決該問 題的方法,在arm架構編程這個當下最為熱門的領域更是如此。

      【發(fā)明內容】

      [0004] 為克服相關技術中存在的問題,本公開實施例提供棧溢出位置的檢測方法及裝 置,用以實現(xiàn)快捷簡便地檢測棧溢出位置。
      [0005] 根據(jù)本公開實施例的第一方面,提供一種棧溢出位置的檢測方法,包括:
      [0006] 在執(zhí)行待測函數(shù)之前,確定程序中隨機初始化數(shù)字的初始值,其中,所述隨機初始 化數(shù)字處于所述程序的數(shù)組緩沖區(qū)的最后一個元素的前一個字節(jié)對齊地址處,所述待測函 數(shù)屬于所述程序;
      [0007] 執(zhí)行所述待測函數(shù),并在執(zhí)行所述待測函數(shù)之后,獲取所述隨機初始化數(shù)字的當 前值;
      [0008] 判斷所述當前值與所述初始值是否相同;
      [0009] 當所述當前值與所述初始值相同時,確定所述待測函數(shù)未發(fā)生棧溢出;當所述當 前值與所述初始值不相同時,確定所述待測函數(shù)發(fā)生棧溢出。
      [0010] 在一個實施例中,所述確定程序中隨機初始化數(shù)字的初始值之前,所述方法還包 括:將所述程序中的當前層代碼中的任一函數(shù)作為所述待測函數(shù);
      [0011] 所述確定所述待測函數(shù)未發(fā)生棧溢出之后,所述方法還包括:當當前層代碼中的 每一個函數(shù)均未發(fā)生棧溢出時,將下一層代碼中的任一函數(shù)作為所述待測函數(shù),并利用所 述方法對該下一層代碼中的待測函數(shù)進行棧溢出位置的檢測。
      [0012] 在一個實施例中,所述任一函數(shù)包括具有局部變量和/或全局變量的函數(shù)。
      [0013] 在一個實施例中,所述確定程序中隨機初始化數(shù)字的初始值之前,所述方法還包 括:當發(fā)生棧溢出的函數(shù)中包括子函數(shù)時,將該發(fā)生棧溢出的函數(shù)中的任一子函數(shù)作為所 述待測函數(shù)。
      [0014] 在一個實施例中,所述任一子函數(shù)包括具有局部變量和/或全局變量的子函數(shù)。
      [0015] 根據(jù)本公開實施例的第二方面,提供一種棧溢出位置的檢測裝置,包括:
      [0016] 第一確定模塊,用于在執(zhí)行待測函數(shù)之前,確定程序中隨機初始化數(shù)字的初始值, 其中,所述隨機初始化數(shù)字處于所述程序的數(shù)組緩沖區(qū)的最后一個元素的前一個字節(jié)對齊 地址處,所述待測函數(shù)屬于所述程序;
      [0017] 函數(shù)執(zhí)行模塊,用于執(zhí)行所述待測函數(shù),并在執(zhí)行所述待測函數(shù)之后,獲取所述隨 機初始化數(shù)字的當前值;
      [0018] 判斷模塊,用于判斷所述當前值與所述初始值是否相同;
      [0019] 第二確定模塊,用于當所述當前值與所述初始值相同時,確定所述待測函數(shù)未發(fā) 生棧溢出;當所述當前值與所述初始值不相同時,確定所述待測函數(shù)發(fā)生棧溢出。
      [0020] 在一個實施例中,所述裝置還包括:
      [0021] 第一選擇模塊,用于在所述第一確定模塊確定程序中隨機初始化數(shù)字的初始值之 前,將所述程序中的當前層代碼中的任一函數(shù)作為所述待測函數(shù);
      [0022] 第二選擇模塊,用于在所述第二確定模塊確定所述待測函數(shù)未發(fā)生棧溢出之后, 當當前層代碼中的每一個函數(shù)均未發(fā)生棧溢出時,將下一層代碼中的任一函數(shù)作為所述待 測函數(shù),并利用所述方法對該下一層代碼中的待測函數(shù)進行棧溢出位置的檢測。
      [0023] 在一個實施例中,所述任一函數(shù)包括具有局部變量和/或全局變量的函數(shù)。
      [0024] 在一個實施例中,所述裝置還包括:
      [0025] 第三選擇模塊,用于在所述第一確定模塊確定程序中隨機初始化數(shù)字的初始值之 前,當發(fā)生棧溢出的函數(shù)中包括子函數(shù)時,將該發(fā)生棧溢出的函數(shù)中的任一子函數(shù)作為所 述待測函數(shù)。
      [0026] 在一個實施例中,所述任一子函數(shù)包括具有局部變量和/或全局變量的子函數(shù)。
      [0027] 根據(jù)本公開實施例的第三方面,提供一種棧溢出位置的檢測裝置,包括:
      [0028] 處理器;
      [0029] 用于存儲處理器可執(zhí)行指令的存儲器;
      [0030] 其中,所述處理器被配置為:
      [0031] 在執(zhí)行待測函數(shù)之前,確定程序中隨機初始化數(shù)字的初始值,其中,所述隨機初始 化數(shù)字處于所述程序的數(shù)組緩沖區(qū)的最后一個元素的前一個字節(jié)對齊地址處,所述待測函 數(shù)屬于所述程序;
      [0032] 執(zhí)行所述待測函數(shù),并在執(zhí)行所述待測函數(shù)之后,獲取所述隨機初始化數(shù)字的當 前值;
      [0033] 判斷所述當前值與所述初始值是否相同;
      [0034] 當所述當前值與所述初始值相同時,確定所述待測函數(shù)未發(fā)生棧溢出;當所述當 前值與所述初始值不相同時,確定所述待測函數(shù)發(fā)生棧溢出。
      [0035] 本公開的實施例提供的技術方案可以包括以下有益效果:
      [0036] 上述技術方案,通過比對函數(shù)執(zhí)行前后保存于預設位置處的隨機初始化數(shù)字的 值,就能確定出棧溢出位置,實現(xiàn)了快捷簡便地檢測棧溢出的位置,方便程序開發(fā)人員進行 進程調試。
      [0037] 應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不 能限制本公開。
      【附圖說明】
      [0038] 此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本公開的實施 例,并與說明書一起用于解釋本公開的原理。
      [0039] 圖1是根據(jù)一示例性實施例示出的一種棧溢出位置的檢測方法的流程圖。
      [0040] 圖2是根據(jù)一
      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1