當前位置:首頁 » 編程軟體 » 反編譯qt

反編譯qt

發布時間: 2022-10-08 02:25:51

A. file.read()讀取的位元組數據怎麼反編譯恢復成源文件中的數據、字母或文字。

由於課程原因,用到了其中的離線手寫漢字型檔(HWDB1.1trn_gnt與HWDB1.1tst _gnt)的數據。這些數據以.gnt格式存儲,解碼後可以得到3755個常用漢字的各300個樣本。按照CASIA的建議,240個不同的書寫者的樣本作為training set,剩餘60位書寫者的樣本作為testing set, 則共有897758個training sample, 223991個testing sample. 本文提供一段python腳本,可以直接將其中的數據存儲成numpy數組文件(.npy文件)。只是,由於圖像位置及大小對齊處理的原因,代碼效率不是很高,執行起來需要的時間有點久:

Intel Core i7-4710MQ
16GB DDR3L RAM123

配置下,training set由.gnt文件轉成.npy文件共花費 78 分鍾。最終的結果文件有點大(training set 876MB, testing set 218M),可能存成.npy文件不如.h5文件更方便些。

另外,請大家在使用數據時遵守CASIA對於該資料庫數據的使用要求。

gnt格式定義見下圖:


如圖所示,文件的前4個位元組記錄了第一個字元數據與下一個字元數據之間的位元組數,比如這4個位元組是35656的話,第二個字元的數據就是從第35657個位元組開始(下標35656)。接下來的兩個位元組存儲該字元的GBK編碼,再下面的4個位元組記錄了字元圖片的寬度和高度,然後就是字元圖片的數據(按行存儲)。

所需依賴:

  • opencv (>=2.0)

  • numpy

  • 具體代碼如下:

  • # -*- coding: utf-8 -*-


  • from __future__ import print_function


  • import cv2

  • import numpy as np

  • import os

  • import struct

  • import sys

  • import zipfile


  • def gnt2npy(src_file, dst_file, image_size, map_file):

  • '''

  • 將gnt文件存為npy格式


  • param src_file: 源文件名,gnt文件

  • param dst_file: 目標文件名, 若此參數設置為'xxx',則會生成xxx_images.npy 和 xxx_labels.npy

  • param image_size: 圖片大小,設置為m時,最終文件的大小將為 m x m

  • param map_file: 由於漢字編碼不連續,作為分類label並不合適,該文件保存漢字碼和label的映射關系

  • '''


  • code_map = {}

  • if os.path.exists(map_file):

  • with open(map_file, 'r') as fp:

  • for line in fp.readlines():

  • if len(line) == 0:

  • continue;

  • code, label = line.split()

  • code_map[int(code)] = int(label)

  • fp.close()

  • images = []

  • labels = []


  • if zipfile.is_zipfile(src_file): #單體zip文件

  • zip_file = zipfile.ZipFile(src_file, 'r')

  • file_list = zip_file.namelist()

  • for file_name in file_list:

  • print("processing %s ..." % file_name)

  • data_file = zip_file.open(file_name)

  • total_bytes = zip_file.getinfo(file_name).file_size

  • image_list, label_list, code_map = readFromGnt(data_file, file_name, image_size, total_bytes, code_map)

  • images += image_list

  • labels += label_list

  • elif os.path.isdir(src_file): #包含gnt文件的文件夾

  • file_list = os.listdir(src_file)

  • for file_name in file_list:

  • file_name = src_file + os.sep + file_name

  • print("processing %s ..." % file_name)

  • data_file = open(file_name, 'rb')

  • total_bytes = os.path.getsize(file_name)

  • image_list, label_list, code_map = readFromGnt(data_file, image_size, total_bytes, code_map)

  • images += image_list

  • labels += label_list

  • else:

  • sys.stderr.write('Source file should be a ziped file containing the gnt files. Plese check your input again. ')

  • return None


  • with open(map_file, 'w') as fp:

  • for code in code_map:

  • print(code, code_map[code], file=fp)

  • fp.close()

  • np.save(dst_file + '_images.npy', images)

  • np.save(dst_file + '_labels.npy', labels)



  • def readFromGnt(data_file, image_size, total_bytes, code_map):

  • '''

  • 從文件對象中讀取數據並返回


  • param data_file, 文件對象

  • param image_size: 圖片大小,設置為m時,最終文件的大小將為m x m

  • param total_bytes: 文件總byte數

  • param code_map: 由於漢字編碼不連續,作為分類label並不合適,該dict保存漢字碼和label的映射關系

  • '''

  • decoded_bytes = 0

  • image_list = []

  • label_list = []

  • new_label = len(code_map)

  • while decoded_bytes != total_bytes:

  • data_length, = struct.unpack('<I', data_file.read(4))

  • tag_code, = struct.unpack('>H', data_file.read(2))

  • image_width, = struct.unpack('<H', data_file.read(2))

  • image_height, = struct.unpack('<H', data_file.read(2))

  • arc_length = image_width

  • if image_width < image_height:

  • arc_length = image_height

  • temp_image = 255 * np.ones((arc_length, arc_length ,1), np.uint8)

  • row_begin = (arc_length - image_height) // 2

  • col_begin = (arc_length - image_width) // 2

  • for row in range(row_begin, image_height + row_begin):

  • for col in range(col_begin, image_width + col_begin):

  • temp_image[row, col], = struct.unpack('B', data_file.read(1))

  • decoded_bytes += data_length

  • result_image = cv2.resize(temp_image, (image_size, image_size))

  • if tag_code not in code_map:

  • code_map[tag_code] = new_label

  • new_label += 1

  • image_list.append(result_image)

  • label_list.append(code_map[tag_code])


  • return image_list, label_list, code_map



  • if __name__=='__main__':


  • if len(sys.argv) < 5:

  • sys.stderr.write('Please specify source file, target file, image size and map file ')

  • sys.exit()


  • src_file = sys.argv[1]

  • dst_file = sys.argv[2]

  • image_size = int(sys.argv[3])

  • map_file = sys.argv[4]

  • gnt2npy(src_file, dst_file, image_size, map_file)

  • 10710810911011111114115

  • 命令格式舉例:python gnt2npy.py src target img_size map_file,以上參數中,gnt2npy為腳本文件名,可任意更改。src為源文件名,可以是只包含.gnt文件的zip包,也可以是將壓縮文件解壓後的文件夾名稱,target為目標文件名,假設該值為train則腳本執行後會生成train_images.npy與trian_labels.npy兩個文件,分別為圖像數據和對應的label。圖像的大小則可以通過第三個參數img_size指定,假設該值為32則圖像文件大小為32 x 32。另外,由於漢字的GBK編碼並不是從零開始,也不完全連續,作為分類的label不是很合適,因此在保存label時根據一定的規則將GBK編碼映射為數據的label,最後一個參數map_file則保存這種映射關系,第一次執行腳本時生成該文件,以後則可以通過該文件保證相同漢字,其label總是相同的。

    請注意,HWDB1.1trn_gnt.zip包含的其實是一個ALZ壓縮文件,因此請不要將該文件名直接作為參數傳入以上代碼,請將裡面的ALZ文件解壓後將文件夾的名字作為參數。

    此外,這個Github鏈接提供了預覽及保存圖片文件的工具,同樣可以用於該文件類型(.gnt)的數據提取,並且可以通過選擇使用的框架(Caffe/CNTK/TensorFlow/NvidiaDigits)將圖片文件按照不同的大小、格式保存。其中,win64_bianry.zip包含編譯好的X64二進制文件和一份簡單的使用說明,其他為源碼及源碼生成GUI需要用到的圖片和一個qt項目文件gntDecoder.pro,有興趣的話也歡迎大家下載源碼隨意修改。預編譯的X64程序運行時可能要求」api-ms-win-crt-runtime-l1-1-0.dll」,出現該信息的話請通過微軟官網或者機器中的Windows Update安裝KB2999226補丁(通用C運行庫)。

B. 誰有linux下的QT反編譯軟體分享一個給我謝謝,objmp不行。

objmp -sd 文件可以的,是不是你沒裝好呢?

C. 改了QT的源碼怎麼編譯

你想要修改源代碼,首先你要拿到源代碼。

如果你拿不到,那對於iOS來說就不用想了(反編譯也就能到二進制文件,如果你感興趣也可以嘗試修改二進制文件),你是無法修改的。
對於Android,可以將apk反編譯回代碼,但是Android開發者基本都會在發布之前採取一些防反編譯的措施(比如代碼混淆),所以你可以想像拿到的代碼的可讀性…

反編譯和修改這種行為極有可能構成侵權,請尊重每個開發者,不論出於學習目的還是其他目的

D. 用Qt框架寫的軟體怎麼反編譯

修改替換"framework-res.apk"後導致無法進入系統,或者無限開機重啟的,基本都是在編譯跟反編譯上出了問題!! 首先要完成構建java環境 要想美化,必須先認真看懂下面的每一步, ①framework-res.apk是不可以重簽名的

E. 如何學習編程

大家第一次接觸編程的時候我想很多人都會在那些Q群啊之類的地方不斷的問,怎麼學習編程,要看些那些書甚至在網路,谷歌里搜索如何學習編程

這篇文章,我會從我自己學習編程的角度去描述,如何學習,可能不是最好的學習方法,但是我想對於一些朋友總會有幫助的,因為方法是源自你個人我在這里說一下我的格言:別去想別人怎麼做,首先應該想自己怎麼做別去想別人怎麼幫助你首先想自己幫助自己

想想我自己學習編程也有好多年啦初三開始小打小鬧的用C語言寫個無聊的printf()到用HTML寫幾個個人網站雖然沒啥技術含量不過都是自己的勞動,那時候真的很激動,現在回想起來,其實那時候很幼稚不過也造就了我的興趣吧!好了閑話就少說了,我們入正題

在學習之前,請允許自己先問下自己:我為什麼要做這樣的事對於編程,我會先問一下,你為什麼要學習編程?你會怎麼回答?

A:興趣;

B:讀書需要;

C:傳聞是高薪職業;

D:容易就業;

E:被逼的;

F:無聊學學;

這個你會怎麼選擇;什麼樣的目的,得到什麼樣的結果如果你選擇(A)我會開心,興趣就是動力,就算沒有人教,你也會鼓足勇氣去學習,就我個人來說,我是那種屁股坐不穩的人,你叫我坐在那裡什麼都不做半個小時,我會全身都不舒服的但是一說到計算機,編程我可以一坐就是7,8個小時自己還沒感覺興趣第一,很好,你以這個為目的我相信你一定能學好相信你也有自己的一套學習方式

如果你選擇的是B:那麼你也有一定的成功幾率,首先你要是一個會讀書的人,可以說讀書就是你的興趣,那麼你也可以學好當然如果只是隨潮流大家都讀所以我也要讀,那麼你只能學不好了

如果你選擇的是C:那麼你還是早點放棄吧,那些擁有高薪的都是十分牛的人,其實的廣大程序員還是掙扎在生活的水平線上混飯吃而已,所以如果你抱著高薪去學習編程,你一定肯痛苦這類也是最能有成就的一類,編程是技術需要的是一份執著,但是你的執著只是金錢技術現在並不等於金錢……

如果你選擇的是D:我還是勸你早點放棄,現在的就業也不樂觀啊,失業大軍里計算機就佔了很大的一部分比重,你隨時都可能是其中的一分子

如果你選擇的是E:很好,你也有可能學好,前提是逼你的人能一直強逼你下去,讓你進步,一句非常經典的話:「人都是被逼出來的……」你出生的時候的確是被逼出來的,被你媽媽逼出來,呵呵!

如果你選擇的是F:也不錯,起碼你無聊的時候想到的居然是編程,證明編程還能給你帶來樂趣

既然你已經知道為什麼學習編程,那麼我們要做的就是怎麼去學習了現在的編程語言很多,上百個語言,但是無論什麼語言,都會有共同性的所以你要學習編程那麼就要先學習編程的思想,這個編程的思想你也只能看一下而已了解一下計算機如何去讀這些編程語言這個很重要不了解過個你學習任何編程語言都很難做到靈活運用

你明白了計算機是如何讀編程語言是的這個時候你就可以開始選擇你學習的語言了至少這些編程語言都是我能看懂的,可以說是自己學過的也會解析一下學習這些語言的一些特點

A: c#.NET

B: Java

C: C/C++

D: PHP

E: JavaScript

F: lua

我只列出了五種,其實還有更多的語言,有興趣可以自己去找下這些語言的特色其實我了出的這些都有一個特色都是跟C語言有一定的相似的

A: C#這個語言是微軟推出的,目前大部分應用都是應用在WIN平台上,雖然LINUX也能用,但支持還不是太好編程風格上我覺得是最優美至少看起來很舒適,強大的智能感知編程的學習難度分級是:初學偏易,一般編程中等,高級編程難梯度不算陡峭雖然是面向對象,但是現在大部分的人都很用到面向對象至少我在國內反編譯很多的應用系統的時候很多都沒有用到編程思想的,雖多就是把類用來實現腳本編程閉包功能而已真正使用到面向對象的繼承多態的並不多當然也有很多是使用了面向對象思想的,所以我覺得初學C#的時候完全可以放棄對象的繼承,多態這類比較復雜的東西專心學習他的語法糖,還有封裝好的API,其實C#這個語言已經有個很完善的API基本上的應用都可以直接使用API來實現,而且從演算法構造上也不算復雜再加上IDE的智能感知,新手只需要了解各個命名空間的作用就可以了,智能感知會幫助我們完成API的調用(至少你要知道那些方法在那個空間,怎麼用)所以初學我把它定義在上手「易」現在的學習其實並非一定要從記事本開始學會使用IDE學習其實也是一項技能編程很重要的一點就是你動了多少手,你就收獲了多少,無論你看了多少別人的代碼,如果你不自己動手去寫一下,你永遠沒辦法感受到內涵,之前我有部分同學,他們跟我說,現在網上大把代碼,那裡需要自己敲得那麼辛苦幹嘛上網COPY一下就什麼都有了,傻瓜才自己手寫好吧我承認我傻瓜但是自少我現在的水平我敢說,,你只需要給我2樣東西我一樣能寫出你上網找的那些代碼一樣是VS,另一樣是幫助文檔說起這個事又令我想起最近公司招聘的一些趣事最近公司面試了接近80個人吧,因為我們公司的上機考試是不允許上網的呵呵!你們可以想像一下,不能上網後只有30個能勉強敲的出代碼的能做出題目的更是少得可憐突然我就想,這些人到底有沒基礎的,一個簡單的登錄功能和上傳文件功能不能上網就不會寫,我真是狂汗……一些號稱三年五年工作經驗的,居然還寫不出一個簡單的交叉表查詢(其實就10句代碼……)所以啊過分依靠網路怎麼可能有自己的技術積累呢,這些人在我眼裡三年五年也成不了構架師……可能十年也去不到構架師的水平

B:JAVA 跟C#類似,傳聞微軟推出C#也是為了對抗JAVA而搞出來的這兩種語言有很多相似的地方什麼是命名的方式上都有很多相似的地方,JAVA也是從C語言里發展起來的不過我覺得在學習曲線上,初學要比C#難,中國人普遍英語不太好而且在IDE上微軟的VS要比JAVA的各類編輯器要優勝,主要是在智能感知上,還有一些輔助上可能很多JAVA的鐵桿FANS會給我丟西瓜,丟雞蛋了但我敢說,我說的是事實,JAVA位置一個環境都很辛苦,至少我學習的時候是這樣免費啊,JAVA很多東西都是免費的,微軟要收費的,收費肯定好了……我會偷偷的笑……你丫就不用盜版?有了光榮的盜版收費問題根本就不是問題,再說從學習的角度……盜版這些東西根本就無關痛癢的……反而更容易召集人氣……

C: C語言可以說是非常牛逼的語言,長期位居第一但是需要投入的精力也不少啊,智能感知一直進步不大,可能是因為萬惡的宏定義呵呵(這個萬惡可不是我說的)當然學習C語言如果你不懂使用宏定義那麼你肯定沒學過C語言,C語言的宏定義雖然一直在C語言的書本上很少描述但是實際應用卻是不可缺少的,我看過IDSOFT的DOOM的源代碼里簡直就是神一般但是看起來也真是辛苦題外話,其實上面很多語言都是根據C語言衍生出來的,什麼很多特性都是參照了C語言用很玄幻的說話C語言是遠古時代遺留的強大魔法既然是遠古學習曲線自然就陡峭得可以,我個人感覺我的C語言水平其實都只是菜鳥而已C++一樣是菜鳥C++和C其實我覺得是2個語言根本不能混為一談的,但是很多招聘之的都把C/C++歸為一類,所以我也把它歸為一類,很多人想問學C++是不是要先學C.而且C++的分支多得嚇人內涵也豐富得嚇人……C語言個人技術化,我個人覺得C/C++起碼要4年才算出師,JAVA是2年,C#都是2年而且還需要一系列的計算機基礎,演算法基礎等一些東西而JAVA和C#都把這些東西封裝了成標準的API了,我們只需要使用但是C/C++這些東西都沒有一個確定的標準例如界面庫,有人用QT有人用MFC.這些都是不一樣的所以選擇的路也多,學的東西自然也更多了但從編程上,並非就是C++的就比用C#的牛C++只是擁有深厚的歷史,有自己獨特的文明是因為它的文明而牛

D:PHP 接觸不深,但是我覺得它是一個製作網頁的好語言,其他領域我並不怎麼看好他,我覺得PHP在開發網頁上有很大的優勢,但是開發B/S級系統應用就現得比較力不從心了所以如果你定位自己作為一個網頁開發人員的話,你就應該學習這種語言如果是B/S級的應用的話,就應該使用C#或者JAVA,或者其他的語言

E:JavaScript,非常有名的腳本語言,如果你想從事B/S的開發,網頁開發,你就一定要學這個,是一個必須掌握的技能學習曲線相對比較平坦,而且內容也不算多,但是應用卻十分靈活的語言強烈推薦初學者先學習這個語言,來尋找感覺,因為這個語言完全不存在編程環境的問題,你只需要有瀏覽器,記事本,兩樣任何系統都有的軟體就可以編寫它所以我覺得首先學習它會對你理解編程思想有一定幫助

F:LUA這個也是一個腳本語言,成就這個語言的名聲是來自一個叫「魔獸世界」的游戲,目前我了解LUA應用的領域比較多都是作為一種嵌入語言,嵌入到C或者C++中去使用,在國內很多游戲公司都會有LUA程序員,部分會由C語言程序員去兼任因為LUA在語法上和C有很相似的地方,基本對舊的C語言程序員學習LUA是無難度的當然也有它的局限性,作為腳本語言它本身就存在不足,而且這個語言本身就是作為C語言的擴展來用的所以,學習這個語言的話,建議先學習C語言或者成就更高(或者而已!)

我個人是選擇C#作為長期發展的語言的我覺得這個語言比較適合我這種英語不算好,但是又喜歡編程的人

PS:真心想學編程的必須要學習一定的英語能力,因為很多編程的先進思想都是英文的所以英語好,對成為高手起很大作用的

知道為什麼學習編程,又選擇了目標語言,接下來就是基礎學習了

這個基礎學習,我覺得首先要對一些語法糖熟悉,第二件事情就是要多編,多看,可能你買的書都附帶著實例代碼的,我覺得對於初學者,首先你把書上的程序都照 著編一次,在這期間,你一定會遇到無數的錯誤,但是這些錯誤將會是重復出現的,這個時候你就學會了如何排錯,有人說過編程不是一口氣寫出來的,是修改出來 的所以學習排錯是編程的第一步,雖然隨書光碟有很多代碼,但是這些代碼都不屬於你的沒有入你腦,唯一讓這些代碼屬於你的辦法就是多抄(打)幾次當你把一本編程的基礎書都看透了……至少別人問你這本書的知識你能答得上口,那就是你度過了第一時期了你可以進入一搬階段了

一般的階段,這個階段我把它定義為是把這些語法組織成句子,組織成文章的時期我想問下,大家都上過語文課吧,我們來回想一下,我們學習語文的過程

字=》詞=》句=》文章;

而編程的學習則是這樣的;

變數=》函數=》類=》架構

所以我們在初學階段做的都是學那些字,那些詞(其實就是語法糖)然後我們就會學造句,造句的時候就會涉及到把什麼詞語組合起來會得到優美的句子,而合理的句子,加上合理的邏輯就會變成一篇優美的文章但是一篇優美的文章並非那麼簡單的也就是一個程序架構的優美一樣沒那麼簡單一樣,需要很多很多學識以上內容均出自上嵌編輯發布、轉載需告知。

F. 如何用 純C++開發安卓應用

純C++,你想多的。
除非你從頭開始寫系統api。
沒有android給你提供的api,或者別人提供的類庫,你用純C++自己實先去。

C/C++ 開發android,可以使用NDK;
Android NDK 是在SDK前面又加上了「原生」二字,即Native Development Kit,因此又被Google稱為「NDK」。
眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。
NDK包括了:
從C / C++生成原生代碼庫所需要的工具和build files。
將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平台的一系列原生系統頭文件和庫
為何要用到NDK?
概括來說主要分為以下幾種情況:
1. 代碼的保護,由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2. 在NDK中調用第三方C/C++庫,因為大部分的開源庫都是用C/C++代碼編寫的。
3. 便於移植,用C/C++寫的庫可以方便在其他的嵌入式平台上再次使用。

2、或者使用Qt for android。使用qt提供的C++類庫(加上了Qt自己的特性)開發andriod

不過建議對C/C++非常熟練才用C/C++開發。不然內存溢出呵呵。

不是浸淫C++技術的高手的話,老老實實學java或者go吧。

G. 怎麼用QT反編譯exe文件

可以使用打包工具 Enigma Virtual Box 把需要的dll與exe打包生成一個exe 可以使用靜態編譯(QT的這個比較麻煩,我沒用過) 不要使用QT平台,直接使用VS平台開發

H. 通達信的加密公式如何破解軟體

通達信完全加密破解器.zip 免費下載

鏈接: https://pan..com/s/1m_8cZQT007N0Ki2w2XAowA

?pwd=6mkd 提取碼: 6mkd
通達信炒股軟體是一款定位於提供多功能服務的證券信息平台,由深圳財富趨勢科技股份有限公司設計的一款移動證券軟體。通達信允許用戶自由劃分屏幕,並規定每一塊對應哪個內容


I. resource hacker反編譯qt編出的exe嗎

可以使用打包工具 Enigma Virtual Box 把需要的dll與exe打包生成一個exe 可以使用靜態編譯(QT的這個比較麻煩,我沒用過) 不要使用QT平台,直接使用VS平台開發

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:943
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371