- 博客(32)
- 收藏
- 关注
原创 MFC界面库ToolkitPro v15.3.1的编译和使用教程(支持VS2015和VS2017)
界面库全称为Codejock Xtreme Toolkit Pro,目前可以免费使用的版本为v15.3.1,可以在优快云上搜索下载,有很多,比如。
2025-01-12 01:59:40
1204
原创 [QT多线程基础系列]QT多线程之线程池QThreadPool方法详解
在Qt中使用线程池需要先创建任务,添加到线程池中的每一个任务都需要是一个QRunnable类型,因此在程序中需要创建子类继承QRunnable这个类,然后重写 run() 方法,在这个函数中编写要在线程池中执行的任务,并将这个子类对象传递给线程池,这样任务就可以被线程池中的某个工作的线程处理掉了。QRunnable类 常用函数不多,主要是设置任务对象传给线程池后,是否需要自动析构。
2024-11-11 02:25:56
106
原创 [QT多线程基础系列]QT多线程之moveToThread方法详解
假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。本博客同样以数字排序进行举例说明!
2024-11-09 15:09:40
519
原创 [QT多线程系列]QT多线程之线程类QThread的使用详解
假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。本博客以数字排序进行举例说明!
2024-11-08 00:32:36
67
原创 Visual Studio高版本到低版本的转换
由于VS版本比较多,低版本无法直接打开高版本的工程文件,通过对工程文件进行一些修改可以解决这些问题。通过修改Solution文件和Project文件,可以使低版本转换为高版本。
2024-11-06 23:30:02
921
原创 [QT基础系列]QT信号槽的使用详解(含Lambda表达式)
案例:“指挥官” (Commander)发送一个 “冲” (go) 的信号,然后 “士兵" (Soldier)执行“ 战斗” (fight) 的槽函数信号和槽都已经定义完毕, 接下来就可以进行连接了// 1. 创建两个类的实例// 2. 建立信号和槽的连接// 3. 发送信号// emit 可省略如果要使用信号和槽,需要满足如下两个条件自定义的类,要继承自 QObject自定义的类,其中要声明一个宏 Q_OBJECT只有满足了这两个条件才可以正常使用信号槽机制。
2024-11-03 21:31:33
271
原创 [QT基础系列]表格QTableWidget
是Qt中的表格控件,可以行列的形式来展示数据有很多属性和方法,完整的可查看帮助文档。在窗口上放置一个控件后,既可以在设计师UI界面来编辑属性和添加数据,也可以在代码中动态地设置,常用的属性和方法如下。
2024-11-02 03:44:14
194
原创 [QT基础系列]QT程序的发布部署
打开QT控制台,根据自己的编译器选择相应的控制台,如MinGW 64-bit。切换目录到debug(包含exe程序)下,执行命令即可完成部署。
2024-10-31 00:59:40
75
原创 [QT基础系列]滑动条QSlider
QSlider是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整数QSlider继承自,它的绝大多数属性都是从继承而来的。
2024-10-27 23:09:35
182
原创 [QT基础系列]复选按钮QCheckBox
Qt中的复选按钮类是QCheckBox它和[单选按钮]很相似,单选按钮常用在 “多选一” 的场景,而复选按钮常用在 "多选多"的场景比如喜欢的水果选项中,可以在 “苹果/桃/梨/橘子/香蕉” 中选择多个。
2024-10-26 23:57:21
284
原创 [QT基础系列]单选按钮QRadioButton
Qt中的单选按钮类是它是一个可以切换选中(checked)或未选中(unchecked)状态的单选按钮单选按钮常用在 “多选一” 的场景,也就是说,在一组单选按钮中,一次只能选中一个单选按钮比如性别中的 “男女” 二选一,学历中的 “博士/硕士/本科/其他” 四选一,等等。
2024-10-26 23:57:03
276
原创 [QT基础系列]文本框QLineEdit
QLineEdit 是 Qt 中的文本框,准确地说是单行文本框,通常用于接受用户的输入比如用户输入用户名、密码等,都可以使用该控件。
2024-10-24 23:57:18
51
原创 [QT基础系列]窗口QWidget
所有窗口类的基类Qt 中有 3 个窗口的基类:QWidget、QMainWindow、QDialog在创建 Qt 工程时,会让我们选择继承自哪一个窗口类其中,QMainWindow、QDialog 都是继承自 QWidge所有控件类的基类Qt 中的控件类(按钮、输入框、单选框等)也属于窗口类它们的基类也是 QWidget;可以内嵌到其他窗口的内部,此时需要给其指定父窗口;可以作为独立的窗口显示,此时不能给其指定父窗口;
2024-10-23 07:10:30
261
原创 【超级鼠标键盘锁】之远线程注入winlogon.exe进程屏蔽Ctrl+Alt+Del、Win+L
通过上一节对进程的调试,得到了其处理和Win+L按键的关键代码位置偏移,并阐述了如何对指令进行修改,从而达到屏蔽这两个按键。本节采用远线程注入技术进行实现。
2024-10-06 19:05:38
183
原创 【超级鼠标键盘锁】之实现思路(非驱动实现)
曾经,学习孙鑫老师的《VC++深入详解》时,接触到了钩子HOOK原理,一度对HOOK技术特别感兴趣,便自然而然产生了实现“鼠标键盘锁”的想法。
2024-10-01 11:59:01
56
原创 一种使用setdll+HOOK钩子技术+dll为MFC程序ProtocalTool等老旧程序打补丁的思路(含源码)
由于工作原因,需要使用一个很老旧的软件,没有源代码,该软件在XP系统下运行正常,但是需要登录,且在win10系统下使用时IP控件运行不正常,只能输入每个数字只能输入2位数,还有一些其他问题,比如给软件添加一些编辑框,或者对软件进行下面简单梳理一下解决这些问题的思路。
2024-10-01 11:56:04
184
原创 Ollydbg使用教程学习总结(五)
新内容:硬件断点用PEID打开,看到程序是用VC6.0写的,用OD载入,按F9运行后,出现NAG窗口,在OD中按下暂停,再打开堆栈窗口如上图高亮行正是调用NAG窗口的call,双击来到反汇编窗口并下断重新运行程序,发现程序的3个窗口都是对话框,且都来自这个call,因此不能直接将该指令NOP掉。继续往上浏览,发现有je跳转语句,只要让第1次和第3次跳转实现,第2次跳转不实现即可。在数据段00445E80。
2024-09-05 06:47:30
96
原创 Ollydbg使用教程学习总结(四)
用PEID查看,是VC6编写的程序,用OD载入API下断方法:a.右键=>查找=>所有模块间的调用,直接输入API,找到后右键该行=>在每个调用到上设置断点;b.Ctrl+N,找到后右键=>在每个参考上设置断点;按F9运行程序,删除输入注册码之前就触发的断点,最后输入注册信息之后,在如下位置断下。
2024-09-05 06:46:42
122
原创 Ollydbg使用教程学习总结(三)
点击注册,输入邮箱和序列号后提示如下突破口:该提示窗口中的字符串,查找如下双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test al,al,猜测al=0为未注册,al=1为已注册,再往上查看,决定al值,下断跟进查看。跟进“需进入1”,找到2个关键call跟进“需进入2”和“需进入3”,发现函数里代码相似看来是关键,跟进后来到最后一句为mov al,bl,这是改变al值的关键语句,修改为mov al,1后按F9运行程序,发现保存到可执行文件后,运行程序。
2024-09-03 16:34:02
179
原创 Ollydbg使用教程学习总结(二)
把程序跑一遍之后我们发现程序有两个NAG,一个是在程序界面启动前出现,另一个是在程序关闭后出现的。去掉第一个Nag方法如下:①jmp跳过②全部nop掉③令hOwner参数为1,push 1,使其父句柄无意义④更改入口地址为401024双击这一行将下面一行中的值改为1024,如下图具体在数据窗口中定位到4000E8,按下空格键进行修改同理,可去掉第二个NAG窗口。
2024-09-02 17:11:12
131
原创 Ollydbg使用教程学习总结(一)
使用例子程序为Hello.exeOD基本快捷键及功能从系统DLL领空返回到程序领空,Alt+F9通过OD将程序的标题“Hello world”改为“OD Class 01”直接单步执行法按F8单步执行,找到MessageBox传参的地方,直接在数据窗口修改即可。
2024-09-02 17:10:51
305
原创 Windows系统下基于VS通过setdll调试需要远线程注入的dll
下载源代码用管理员身份启动或直到编译结束,在Detorus-master目录下的bin.X86(x64类似)文件夹下,找到setdll.exe文件。
2024-09-02 17:09:30
220
原创 某MFC软件注册码逆向分析(此处只谈思路)
初始状态描述:软件可以正常打开,打开后点击菜单任意按钮,则弹出机器码包含本机机器码的注册框,机器码共有XX位!输入用户名和邮箱等之后,会生成一个后缀名为.dat的文件,并提示用户需要将该文件通过电子邮件反馈给软件厂商,软件厂商反馈后缀名为.key的注册文件,通过菜单注册按钮,选择该.key文件,即可注册成功。首先利用PEID之类的查看程序的基本信息,以及是否加壳,发现并没有加壳,且是采用VC++写的。
2024-09-02 17:01:07
108
原创 IDA反编译dll库时导入C++头文件
有时候,可能因为硬盘损坏等等原因,自己曾经写的动态链接库源码丢失了,幸好对应的头文件得以保留了下来,这个动态链接库主要是某种算法的实现,并没有继承其他的一些类库,比如MFC之类的,而自己对算法的实现已经忘得差不多了,而突然又需要该算法的实现过程,那么有什么办法可以帮助我们呢?一个很好的办法就是采用IDA进行反编译,如果dll只是C语言的导出,那么反编译代码应该比较好看懂!(不过有一个难题是结构体的识别)
2024-09-02 16:59:05
605
原创 MFC软件算法逆向分析详解及技巧
对于直接使用SDK而不使用第三方库的程序,我们要定位到程序的“关键代码”并不困难。通常在CreateWindow函数或DialogBoxParam函数下断点,可以直接获得其主界面的窗口过程或对话框过程。但是对于使用了MFC的程序,我们找到的窗口过程或对话框过程是在MFC提供的程序框架的内部,经过层层的分发和筛选,消息才最终到达用户代码,直接分析起来比较繁琐。幸好,有一个Olly的脚本,可以直接帮助我们找到诸如OnOK()之类的函数。
2024-09-02 15:14:37
289
原创 基于AES加密的恶意软件逆向分析和解密过程(含文件)
首先,用IDA或Ghidra加载文件test.dat,文件为64位文件IDA点击View==>Open subviews==>Imports,查看导入信息Ghidra可以直接看到可以看到,导入函数有:导入库有一个libc.so.6,通过函数名和这个库文件,可以判断应该是linux系统下的。查看字符串:Ghidra分为字符串和Encoding,需要搜索一下才可以显示出来可以看到几个特殊的字符串:1).2).3).4).5).6)7)通过字符串。
2024-08-31 17:47:38
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人