反编译qt
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
通达信炒股软件是一款定位于提供多功能服务的证券信息平台,由深圳财富趋势科技股份有限公司设计的一款移动证券软件。通达信允许用户自由划分屏幕,并规定每一块对应哪个内容
I. resource hacker反编译qt编出的exe吗
可以使用打包工具 Enigma Virtual Box 把需要的dll与exe打包生成一个exe 可以使用静态编译(QT的这个比较麻烦,我没用过) 不要使用QT平台,直接使用VS平台开发