行業乾貨 如何逆向解決QT程式漢化中亂碼問題

2022-07-22 02:48:12 字數 1174 閱讀 7693

前言

準備

【環境和工具】

【學習層次】

實戰**

一.某qt程式漢化中遇亂碼

亂碼二.逆向分析尋找原因

1.od中定位標題字串

程式載入od,定位"registration",並檢視,程式中都有那些位置會呼叫這個字串,如圖

發現有三個地方呼叫了這個字串位址,全部下斷點

2.執行觀察

斷點下好後,執行程式,觀察呼叫字串的邏輯流程,發現下的三個斷點中有兩個在程式啟動會被呼叫,呼叫的目的分別是作為兩個qt庫函式的引數,如下圖

3.正向查閱相關函式原始碼

這裡多說一句,玩逆向不只光玩逆向,一直強調逆向是一種思維,逆向破解的逆向就是開發,活用開發資料,逆向破解中往往事半功倍。

安裝qt後就可以看qt各種庫函式的原始碼和資料,如果你想更深入的了解,給吃透的話,最好的方式莫過於自己開發,自己逆向分析。具體qt環境的搭建可以參閱下面鏈結

開啟原始碼,閱讀相關函式,原始碼如下

4.逆向中驗證上面的正向原始碼

從新載入od,重新執行,根據上面正向查閱的原始碼資料觀察相應的兩個庫函式在逆向中的體現,如下圖

可見,兩個函式其實最終呼叫的都是第乙個函式,而核心關鍵點就是列舉型別引數的值,那麼我們在第乙個庫函式入口【6a2b5818】下斷點動態執行一下,堆疊中觀察引數的變化,如下**

5.總結所有線索

標題字串registration被函式qmetaobeject::tr作為引數

、修改qt庫qtcore4.dll解決問題

其實上面的分析如果已經完全搞懂了,其實就已經知道怎麼解決了,而且解決方法有很多,但是都並不能保證所有程式的通用性,畢竟乙個開發乙個樣,這次他用這個庫函式,沒準下次他用另外乙個,所以吃透後,具體問題具體分析才是任何武功中的「無招勝有招」!針對於這個案例,解決的思路就至少有以下三種

兩種標紅的方法都是修改qt庫函式,所以最終體現是修改了qtcore4.dll這個檔案,方法分別如下

方法1方法2

notepad++寫入內容,轉碼

010editor檢視16進製制內容

od改字串

亂碼解決

Qt例項程式如何使用

qt creator提供f1檢視reference documentation的目錄與qt5.7.0 examples qt 5.7目錄下條目一一對應。該目錄下是對應模組的例程,之前一致沒發現還有這個規律,記錄下以後方便學習查詢。model view 檢視 view 和資料分離,檢視用於顯示和編輯資...

QT程式中文亂碼問題的解決

可能出現的情況 1 使用qmessagebox 經常出現error c2001 常量中有換行符 2 偶爾使用qstring 也會出現 解決方法如下 第一步 使用函式qstringliteral 中文字串 例子如下 hraders qstringliteral 好友列表 qstringliteral ...

RFID技術如何解決鞋帽行業應用

服裝零售行業 rfid 解決方案,主要應用在三個環節,即物流 鏈 門店經營 倉庫管理。在物流 鏈開始的最初環節,企業可以根據自身成本考量以何種方式在服飾裡應用 rfid 電子標籤,市面上有兩種常用方式,一是以水洗嘜方式縫入,二是以服裝吊牌形式存在。不管以何種方式存在,rfid 電子標籤都會隨著服飾類...