PPC字型修改之初步嘗試

來源:互聯網
上載者:User
     現在讓我們嘗試著修改一個軟體的字型,其實PPC的字型函數只有一個(我知道的),就是CreateFontIndirectW函數,雖然MFC中也有個CreateFont,但這隻是CreateFontIndirectW的封裝而已。Win32中不是還有個GetStockObject嗎?可惜現在它只能產生一種字型,就是SYSTEM_FONT,並且顯示非常正常所以GetStockObject就不必考慮了。所以似乎字型問題簡單了起來……,不過PPC程式有些程式使用了動態庫如MFC庫。又沒有好用的Debug。所以好多程式的修改難度比較大,我現在也是處於摸索階段。

現在先介紹一下CreateFontIndirectW這個函數:

HFONT CreateFontIndirect(
  const LOGFONT* lplf
);
Parameters
lplf

[in] Long pointer to a LOGFONT structure that defines the characteristics of the logical font.

Return Values
A handle to a logical font indicates success. NULL indicates failure. To get extended error information, call GetLastError.

上邊是PPC2003的sdk裡邊的介紹,在MSDN裡邊也有。這個函數只有一個參數,就是Logfont結構體。傳回值是一個字型的控制代碼,如果調用失敗則返回NULL。Logfont是一個結構體,是如下定義的:
This structure defines the attributes of a font.
typedef struct tagLOGFONT {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
這些參數不用我介紹了吧?有用的就是第一個即字型的高度。還有就是Charset,這是設定字元集的,不過在PPC下,似乎沒啥用處。最後一個則是字型名,如“宋體”,“Tahoma”等。下邊嘗試著改一下一個軟體的字型。
       第一個被動刀子的是大樹(誰是大樹?當然是風流倜儻,玉樹臨風的……還是自己到bbs.hanzify.org去問吧:)漢化的FunnySnake TKCreater這是個非常好用的主題編輯軟體。這個軟體幾乎在我的PDA上沒有一個標準字型-_-b,當然是先修改標準字型。我發現對話方塊字型全是Tahoma 8,可能是我PDA的解析度問題吧。顯示效果很差。所以我都改成了Tahoma 9就有些地方顯示效果比較好了。但介面還有許多地方字型爛,譬如說主介面:


開啟IDA Pro反組譯碼,搜尋Font字串,找到幾處:

一共找到7處,先分析第一處:

我們知道CreateFontIndirectW的參數只有一個。前面文章我們分析。前四個參數是通過寄存器傳遞。所以R0裡邊就是Logfont的地址了。看看上邊圖,IDA已經標出來了。R0裡邊的值是SP+#0xC0+var_BC。第一個參數也就是字型高度了。我們可以往上翻,找到設定字型高度的地方:

MOV    R3, #0xD

STR     R3, [SP,#0xC0+var_BC]

先把0d放入r3,然後把r3,放入SP+#0xC0+var_BC,這個地址。所以字型高度就是0d.我試著改成0e,其他也照樣都改成0e.只是最後一個有點麻煩:

 


首先我們看到參數在R4裡邊。再看前邊:

首先,字型高度是在R7裡邊,而從的第一行來看則是來源於R2。R2又是這個字函數傳入的第二個參數,所以改法即有兩種:一是把  MOV     R7, R2,改成  MOV     R7, 0x0E,這樣不管傳入什麼參數,得到的都是0x0E的字型,再一種改法便是到函數外邊改:

雙擊圖中的黃色部分,就到了調用處

修改這裡就可以了。全部修改完後效果如下:

但是……


菜單成了這樣字這是真麼回事呢?原來是因為本來這地方是兩行一樣的字型摞起來的。字型改大後由於不一樣了就成醬紫了。並且只要這地方改好了,主介面字型就完了,弄了好一陣子才改的像點樣子了(這個太麻煩,我就不寫了)。可惜最上邊一行時間沒法弄好了。算一個美中不足吧。還有一處美中不足的地方是關於對話方塊的那個串連,我也暫時沒找到改法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.