Time of Update: 2018-12-04
傳統的遠程進程式控制制方式有利用HOOK技術注入DLL,和利用遠線程在目標進程中建立新的執行線程的方式.遠線程不被win9x所支援,而hook技術會對目標進程效能造成一定的影響.並具可以通過枚舉訊息鏈的方式發現.本文給出一種動態修改目標進程代碼,注入DLL到目標進程的方法,效率高,不需要額外線程.缺點是使用難度大於上面二種辦法,並且修改目標代碼的方法,受到編譯器的影響.使用不同的編譯器時,需要根據編譯器調整動態代碼修改方式.動態修改目標進程代碼,使其載入自已的DLL的思路如下:1.
Time of Update: 2018-12-04
一直喜歡玩魔獸PRG地圖,少不了用浩方對戰平台,但浩方對我們這些非付費使用者一直是另眼相看,廣告彈得比你關得還快,今天點快了,一不小心就被其裝了雅虎上網助手,受不了了.決定反qj,我的浩方版本是 Ver 4.5.8 Build:0803 先是去掉彈出圖形彈出廣告,先用spy++查查彈出廣告視窗的名字和類名,然後用od重運行GameClient,然後在登陸後,廣告彈出前在ShowWindow下斷點,中斷後,CTRL+F9返回程式領空,發現是如下程式碼顯示的廣告視窗004A46C3
Time of Update: 2018-12-04
今天隨便地在群裡提了一個簡單的問題:一個擁有預設建構函式的類,當在棧上構造該類的一個執行個體時,變數名後面需不需要加一對空括弧?得到的答案有三種:不需要、也不能加空括弧要加空括弧可加可不加,效果一樣很明顯,只有第1種答案是正確的。如果緊接著追問下去:如果加了空括弧,會有什麼後果?編譯器是報一個錯誤還是讓它順利通過編譯?一些人認為加了空括弧是語法錯誤,其實單就文法上講,加了空括弧並沒有錯誤,這是一條完全符合文法的語句:001 class Foo {002 public:003
Time of Update: 2018-12-04
昨天公司開技術會議,其中涉及到了我寫的一個文檔.老總突然叫我給同事們講一下這個文檔.結果我講的效果十分的差.前言不搭後語,自已都不知道自已在說什麼,最後汗水都講了出來. 不善言辭,性格內向似乎是大部分開發人員的通病,其實我在很熟的朋友面前可不是這樣,也能口若懸河,天花亂墜. 有問題要分析,有困難要克服.我先自我分析一下,為什麼我在很多人面前講文檔就這麼戳呢... 一、緊張,害怕自已講不好,就越緊張越講不好。這應該算是心理上的障礙,可以試著通過自我訓練來克服。 二、
Time of Update: 2018-12-04
作為一個立志研究編譯器技術的IT從業人員,國人自已的編譯器相關的東西比較少.今天在CSDN上看到二條與編譯器有關的新聞,我很是感興趣,點進去一看,卻是大失所望.先是第一個,題目是"中國人自已的編譯器"根據連結進去一看,卻是一個漢化了的ASM.我實在不知道開發語言非要和漢語扯上關係,然後就是中國人自已的了,更不要說漢化了的組合語言?例如"mov eax, 0" 難道我敲成 "移動資料
Time of Update: 2018-12-04
Delphi裡面,用關鍵字var或out,可以讓函數參數按傳遞引用,奇怪的是,var和out根本沒有本質上的區別,按官方的說法:An out parameter, like a variable parameter, is passed by reference. With an out parameter, however, the initial value of the referenced variable is discarded by the routine it is
Time of Update: 2018-12-04
前置處理器,詞法分析器完成,不過這二個只算是編譯器中最簡單的部分,前路漫漫呐.前置處理器很簡單,就是去注釋.如果打算加上宏或編譯指令支援的話,也不大難.詞法分析器以前做過PASCAL語言的,這次實現的是一個類C#語言的,需要加上對字串中轉義符的支援.做編譯器的好處是,能自己得到很多以前不瞭解的知識,比如一個語言為什麼要這樣設計,有的是技術上的限制,有的是文法語義上的考慮,這些都是書上學不到的東西.打完一段字發現肚子餓了.出門吃飯
Time of Update: 2018-12-04
我開發中的編譯器名字暫時叫"Saipan" ,就是塞班島的意思,那是個美麗的地方.目前它分為已下幾個模組預先處理->詞法分析->文法分析->語義分析->位元組碼產生 以及 符號管理,類型系統,屬性管理,錯誤處理 等幾個部分,並在文法分析和語義分析中完成一些屬性的計算.各個模組大概功能如下:預先處理: 目前只是簡單的去注釋 (已完成)詞法分析: 將原始碼拆分成一個個的標識符,並判斷出基本類型,例如關鍵字,運算子,立限數 (已完成)文法分析:
Time of Update: 2018-12-04
剛剛看到的一篇文章,關於C++的封裝性(http://blog.csdn.net/ac1998/archive/2006/10/08/1326184.aspx),大致明白了作者的意思,只是覺得文中所提到的問題與封裝性沒什麼關係,另外有的地方遣詞用句讓人誤會,比方說這句:調用者看到了private裡面的具體實現的細節!——這極大破壞了封裝性。破壞了一個基本的OO原則。Java、C#、Delphi都有同樣的private或protected,難道因為在private裡面放了欄位就破壞了封閉性嗎?這個
Time of Update: 2018-12-04
本來從未打算過寫這類東西,自己用什麼只是自己的事,但最近在網上見過很多貼子中的回複,認為用emacs和vi"之流",棄強大的IDE不用,純屬裝牛B. 對於這種可能連emacs,vi和記事本的區別都沒搞清,卻非要把我和其它emacs,vi使用者定性為裝B的人,實在沒啥好說的,算算自己從初三後開始自學編程,到現在也有8年多了吧.由於自學,難免學得雜,不完全回憶,接觸過(接觸就是起碼在上面寫過程式,編譯並跑過)的開發工具有,QBasic,TC,TP,DBASE,foxpro,redasm,PLT(
Time of Update: 2018-12-04
不同的人,同時盯著左邊這張圖看,看到圖中女子的旋轉方向有不同的感覺,有的人認為是順時針在轉動,有的人正相反,認為是逆時針的。問題的關鍵在於圖中是個剪影,在某種角度,從剪影是無法判斷你看到的是人的正面還是背面,當你覺得她是順時針逆轉時,你認為她是右左腳支撐,以右左腳為軸。相反,當你感覺她是逆時針轉時,你會看到她是左右腳支撐,以左右腳為軸。 下面是一張簡化、放慢了速度的動畫,這張圖說明了為什麼人會有不同的感覺
Time of Update: 2018-12-04
經常看到有人在分配了一個資源(如建立對象、申請記憶體、開啟控制代碼等)後,不習慣用try...finally來確保資源得以釋放,比如這篇轉貼的貼子 ,有如下一段代碼(原來的注釋被我去掉了):001 var002 reg:TRegistry;003 s:String;004 begin005 reg:=TRegistry.Create;006 reg.RootKey:=HKEY_CURRENT_USER;007 if
Time of Update: 2018-12-04
覺得自己在技術上又到了一個必需放棄一些東西的時候了 前段時間學了保護模式編程,就有用WinGDB調試WIN核心,瞭解一下其內部實現的衝動,也有看看FreeBSD的代碼,自己實現一個支援保護模式,多任務,虛擬記憶體的簡單os的衝動. 一直很喜歡編譯技術,現在在用lua語言,又有看看lua原始碼的衝動。想研究文法和語義,就想看看和面向過程,物件導向完全不同思想的函數式語言,就又有想學lisp的衝動.
Time of Update: 2018-12-04
今天偶然看到了RFC3092,講FOO和BAR的含義和起源,我倒並不在乎foo代表的是“張三”還是“李四”,只是在相關文獻中看到了“Chinese Foo Dog”,譯文應該叫“中國福犬”吧?初看上去特別象老婆最喜歡的“松獅”,再仔細找了找相關文檔,原來只是有松獅的血統。但我覺得也許比松獅還要名貴(我不是發燒友,只是瞎猜),據說是絕跡已久,後來在新疆被發現,又稱龍犬、天犬,常做為寺廟的吉祥物,古建筑前的類石獅雕像也會被稱為Foo Dog。真是漂亮的狗,可惜太名貴,養不起。
Time of Update: 2018-12-04
我們平常所使用的主流編譯器,都具有多原始碼檔案支援.例如把一些類定義在相應的檔案中,要使用到這些類時,需要包含定義這個類的檔案(如C++),或引用類所在的名字空間(如JAVA),或將這個檔案作為單元引用(如Object Pascal) 當我們自己要實現一個支援多原始碼檔案的編譯器時,需要在編譯某個原始碼檔案之前,先編譯這個原始碼所引用到的檔案.例如有一個源檔案 a.src,裡面定義了一個類,內容如下:class List{ public void Add(Object
Time of Update: 2018-12-04
今天在CSDN首頁看到了 Borland計划出售IDE產品線的訊息,心中隱有一絲悲傷.雖然我本身己漸離DELPHI, BCB遠去,但Borland一直是我心中最喜歡的軟體公司.特別是DOS時代,那經典的TC和Trubo Pascal,還記得用Basic入門的我,用Trubo
Time of Update: 2018-12-04
六月都市的天空,抬頭看不見星星.畢業設計,答辨搞定了,然後就是過幾天照畢業照,吃散夥飯,哭一場或醉一場.然後4年的大學生活,就這樣逝去小陳陳想回夾江考公務員,波波娃可能回他老家德陽,佳娃倒是滿懷激情的上班了,大家一天天的改變著.多年後,我們還會記得宿舍裡的夜半歌聲,電飯煲中的自製火鍋嗎?倒想起那個笑話,四年學習生活,是我們上了大學,還是大學上了我們,或者接著再被社會強姦 兄弟們,走好
Time of Update: 2018-12-04
晚上在家寫自己的網遊服務端底層庫,休息時在網上閑逛,無意中發現一篇介紹emacs auto-complete的文章,正是自己想要的東西。比hippie-expand使用更方便,快捷。於是便下載下來,配置成功。另補充原文沒有詳細講解的二點: 產生etags:在工程目錄下執行 find -name "*.h" -or -name "*.cpp" -or -name "*.c" |xargs etags --members --language=c++ 使用etags:M-
Time of Update: 2018-12-04
簡介: LUA沒有內建調試器,只提供了一套調試庫,可以實現符合自己需要的調試器.晚上沒事,改寫了一下以前的一個GDB風格的LUA調試器,可嵌入到應用程式中,在需要的時候觸發並調試,有需要的朋友可以參考下. 支援如下命令: h 協助資訊 c 繼續動行 s 單步運行(不跳過函數調用) n 單步運行(跳過函數調用) p var 列印變數值 b
Time of Update: 2018-12-04
最近一個項目,需要根據給定的IP地址,查出它的線路類型(電信、網通、鐵通……),很明顯,二分法的效率比線性搜尋要高,雖然目前IP表只有300條記錄,但是好的演算法總是應該被使用的。抽象聲明:class IpKind {public:virtual ~IpKind(void) {}virtual bool addItem(const unsigned ip, const unsigned mask, const int kind) = 0;virtual bool find(const