闡述: C語言研究中心是一個非官方的由C語言愛好者組成的一個技術(shù)交流組織,進行有組織、有計劃的學(xué)習(xí)、交流和推廣工作。并提倡在日新月異的互聯(lián)網(wǎng)時代下可以飲水思源,讓C語言深入人心!
目標(biāo):
現(xiàn)行目標(biāo):提高團隊間C語言的整體水平,深入學(xué)習(xí)和研究C語言那些不常用、不好理解、不廣為人知的技術(shù)細節(jié),并對外公布學(xué)習(xí)研究成果。
長……繼續(xù)閱讀 »
CTO
8年前 (2016-12-31) 9553瀏覽 5評論
32個贊
想必大家都知道C語言中動態(tài)開辟內(nèi)存之后,必須要釋放內(nèi)存,來防止內(nèi)存泄露。也就是malloc之后,必須要free。正所謂”有借有還,再借不難”, 不少同學(xué)會問為什么釋放指針后,指向這塊內(nèi)存的指針的值不變呢,我們今天為大家揭秘。
首先,我們用malloc開辟一個內(nèi)存,用strcpy拷貝一串字符串,然后釋放掉,通過斷點調(diào)試進行觀察!
下圖可以看到,在……繼續(xù)閱讀 »
CTO
8年前 (2016-12-27) 20139瀏覽 3評論
35個贊
請看下面三種定義:
const char *p;
char const *p;
char * const p;
請問,三者有什么區(qū)別呢?
筆者在之前好多家筆試題種都看到這樣的問題,今天想起又拿出重新梳理一下,便于后人學(xué)習(xí)。
首先看第一種,我們先看p,本著”從里往外”的原則,p是一個char *類型的變量,但char ……繼續(xù)閱讀 »
CTO
8年前 (2016-12-25) 17267瀏覽 1評論
29個贊
請先看一到程序:
程序試圖給長度為10的字符串str拷貝超過10個長度的字符串,不少初學(xué)者可能忘記了數(shù)組開辟的長度或是沒有意識到越界的問題引發(fā)這樣的錯誤寫法,可能更令新人詫異的是,這樣的寫的程序竟然編譯器不報錯,并且運行也不報錯! 大家可以自行嘗試運行這個程序,不僅編譯沒有問題,運行也看起來一切“正?!?!
這就是一個典型的數(shù)組越界引發(fā)的問題,如果大家細……繼續(xù)閱讀 »
CTO
8年前 (2016-12-21) 19612瀏覽 7評論
79個贊
為什么要用”真正”這個詞?因為我們從學(xué)C語言開始,都會先明白這個道理,即C語言有且僅有一個main函數(shù),main函數(shù)是C語言的入口點和出口點?。梢詤⒖?lt;<一個C語言程序的基本機構(gòu)>>)不光C語言如此,C++也如此,甚至無論黑窗口的控制臺程序和Windows應(yīng)用程序,都是從main函數(shù)或者WinMain函數(shù)開始執(zhí)行,這當(dāng)……繼續(xù)閱讀 »
CTO
8年前 (2016-12-17) 20919瀏覽 6評論
56個贊
通過前面的介紹,大家已經(jīng)會了數(shù)據(jù)斷點、條件斷點,今天我們再給大家加一個內(nèi)存斷點,更有意思哦。
顧名思義,內(nèi)存斷點就是在一個地址處下斷點,這個地址只要有讀寫就斷住,就這么簡單。那么下來我們給大家演示一下,先看一個程序:
怎么樣?簡單吧,交換兩個數(shù)字的程序
這個時候比方我想看a變量地址出的改變情況,就可以用內(nèi)存斷點來下斷點,我們先查看&a……繼續(xù)閱讀 »
CTO
8年前 (2016-12-10) 11632瀏覽 1評論
28個贊
在前幾講中,在講解了斷點的基本用法后,給大家介紹了簡單的關(guān)于變量監(jiān)視的技術(shù),包括運行中的局部變量監(jiān)視,也打開了編譯器監(jiān)視的一小扇門,今天將為大家講解更全面的窗口監(jiān)視。如下:
1.內(nèi)存監(jiān)視
除了我們之前講的可以監(jiān)視程序中的局部變量以外,我們還可以監(jiān)視其他想要的信息,比如數(shù)組中某一元素的值,特定地址處的值等等。比如我們在學(xué)習(xí)字符串函數(shù)strcoy時,很多同學(xué)不明……繼續(xù)閱讀 »
CTO
8年前 (2016-12-08) 20657瀏覽 3評論
36個贊
前言
今天起,為增加大家學(xué)習(xí)C語言的趣味性、更深層次的學(xué)習(xí)C語言、學(xué)習(xí)更實用的編程技術(shù),我們今后將陸續(xù)開設(shè)逆向方向的教程專題,希望大家喜歡!
C語言研究中心(www.sztianhecheng.cn)
以下正文
本節(jié)教程將教大家如何去逆向分析和破解一個簡單的C程序,需要大家熟悉基本的C語言語法,用到工具有:VC6、IDAPro、OD、UE等工具。
下面我們……繼續(xù)閱讀 »
CTO
8年前 (2016-12-06) 28654瀏覽 6評論
46個贊
在寫程序調(diào)試過程中,除了我們之前講的任意行下斷點以外,由于程序?qū)嶋H執(zhí)行的復(fù)雜性,處于便捷和更加精準(zhǔn)的需求,VC為我們還提供了條件斷點,即滿足某一條件時才觸發(fā)斷點。
舉一個具體場景,比如當(dāng)程序進行循環(huán)等大量運算時,如果單步調(diào)試顯然會相當(dāng)費事,而條件斷點就可以很好解決這個問題。
來一個具體的程序例子:打印九九乘法表程序,代碼如下:
比如我們想在打印8*9=……繼續(xù)閱讀 »
CTO
8年前 (2016-12-03) 14910瀏覽 2評論
28個贊
上兩講中,為大家介紹到了VC6編譯器的斷點調(diào)試技巧,教給大家如何設(shè)置\取消斷點、單步和跟蹤一個程序。讓大家具備基本的調(diào)試一個程序的能力。今天我們將繼續(xù)深入研究教大家如何更細致、深入的跟蹤和分析一個C程序。
下面進入正文,對于一個有“問題”待分析的程序,我們斷點的目的是為了追溯程序的執(zhí)行過程,跟蹤程序的動態(tài)執(zhí)行過程,從而排查錯誤來解決問題。所以實……繼續(xù)閱讀 »
CTO
8年前 (2016-11-30) 16802瀏覽 2評論
41個贊