avatar
Articles
210
Tags
95
Categories
22

Theqiqi_blog
Search

Theqiqi_blog

4.使用机器码编写bios引导的程序
Created2025-03-25|OperatingSystem|assembly•gcc•Linux•OperatingSystem•Vmware
使用二进制编辑器手动编写 bootloader直接用二进制编辑器写机器码来实现 bootloader 是完全可行的(早期操作系统开发常用此方法)。核心是 手动写出每条指令对应的机器码,并保证启动扇区规范:512 字节 + 结尾 0xAA55。 一、核心原理:指令 → 机器码对应关系x86 16 位实模式指令有固定机器码格式,例如: 指令 机器码 说明 mov ah, 0x0e b4 0e BIOS 打印功能 mov al, 'H' b0 48 ‘H’ 的 ASCII 码 0x48 int 0x10 cd 10 BIOS 视频中断 jmp loop(无限循环) eb fe 相对偏移 0xfe 跳转自身 二、用二进制编辑器编写步骤(以打印 "Hi" 为例)1. 确定指令与机器码打印 'H' → 打印 'i' → 无限循环,对应机器码序列: 123456b4 0e ; mov ah, 0x0eb0 48 ; mov al, 'H'cd 10 ; int 0 ...
3.使用 ndisasm 反汇编 boot.bin
Created2025-03-25|OperatingSystem|assembly•gcc•Linux•OperatingSystem•Vmware
使用 ndisasm 反汇编 boot.binndisasm 是 NASM 自带的反汇编工具,非常适合 16 位实模式代码,输出接近 Intel 语法,更易于与源码对照。 一、反汇编命令1ndisasm -b 16 boot.bin -b 16:指定 16 位模式 boot.bin:目标二进制文件(纯启动扇区) 二、反汇编结果示例以打印 "Hi" 的 bootloader 为例: 1234567891000000000 B40E mov ah,0Eh00000002 B048 mov al,'H'00000004 CD10 int 10h00000006 B069 mov al,'i'00000008 CD10 int 10h0000000A EBFE jmp 0Ah ; 无限循环0000000C 0000 a ...
2.在 Linux 中使用系统自带工具反汇编 boot引导程序
Created2025-03-25|OperatingSystem|assembly•gcc•Linux•OperatingSystem•Vmware
在 Linux 中反汇编 boot.bin(16 位启动扇区)boot.bin 是纯二进制格式(无 ELF 头)的 16 位 bootloader,因此反汇编时需要手动指定架构与格式。Linux 自带的 objdump 就能完成。 一、反汇编命令对于 x86 16 位 bootloader: 1objdump -D -b binary -m i8086 boot.bin 参数说明 -D:反汇编全部内容(纯二进制无段信息,只能全部解析) -b binary:指定输入为原始二进制文件 -m i8086:指定反汇编架构为 Intel 8086(16 位实模式) 二、反汇编结果解析以打印 “Hi” 的启动扇区为例,常见结果如下(只截取核心部分): 123456789101112131415boot.bin: file format binaryDisassembly of section .data:00000000 <.data>: 0: b4 0e mov $0xe,%ah 2: b0 48 ...
1.使用系统自带的as+objcopy+dd+VMware完成bios引导程序
Created2025-03-25|OperatingSystem|assembly•gcc•Linux•OperatingSystem•Vmware
1. 编写代码12345678910111213141516.code16 # 声明 16 位模式(实模式).global _start_start: mov $0x0e, %ah # BIOS 功能:打印字符 mov $'H', %al # 字符 'H' int $0x10 # 调用 BIOS 中断 mov $'i', %al # 字符 'i' int $0x10loop: jmp loop # 无限循环.fill 510 - (. - _start), 1, 0 # 填充到 510 字节.word 0xaa55 # 启动标志 2. 使用 GNU as 将汇编代码转为二进制文件如果系统只有 as(AT&T 语法)并使用 VMware 测试,也可以制作简易 bootloader。 as 默认 ...
0.用nasm编写一个boot程序打印hellworld
Created2025-03-25|OperatingSystem|assembly•nasm•first pragram•OperatingSystem•qemu
Bootlaoder1. 使用汇编语言编写一个二进制程序,显示HelloWorld1. 编写asm.asmasm.asm 1234567891011121314151617181920212223242526272829303132333435[BITS 16][ORG 0x7c00]start: cli ;Clear interrupts mov ax, 0x00 mov ds, ax mov es, ax mov ss, ax mov sp,0x7c00 sti ; Enable interrupts mov si, msgprint : lodsb ; Loads byte at ds:si to AL register and incremens SI cmp al, 0 je done mov ah, 0x0E int 0x10 jmp printdone: cli hlt ; Stop further CPU executionmsg: db 'Hello World! ...
4.QT使用https协议通信
Created2025-03-23|Cpp_Socket|C++•Qt6•IPV4•http•Cmake
1. Qt6使用https协议在客户端发送一条文字消息到服务器端。之前的 HTTP 示例改成 HTTPS,这样客户端通过 TLS 加密发送一条文字消息到服务器端。 这里有几个关键点需要注意: 🔑 关键变化 Qt 客户端 使用 QNetworkAccessManager + QNetworkRequest,但 URL 必须是 https:// 需要配置 QSslConfiguration(证书验证、加密套件等) 如果是自签名证书,需要在客户端信任它(开发阶段可以临时忽略验证) 服务器端 Qt 自带的 QTcpServer 不直接支持 HTTPS,需要用 QSslSocket 或 QTcpServer+QSslSocket 组合 必须加载服务器的私钥和证书(PEM 格式) 证书可以用 openssl 自签名生成 1️⃣ 生成自签名证书(开发测试用) 在终端执行: 1openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout server.key -out server.crt 然后合并成一个 .pem ...
3.QT使用http协议通信
Created2025-03-23|Cpp_Socket|C++•Qt6•IPV4•http•Cmake
1. Qt6使用http协议在客户端发送一条文字消息到服务器端。1.httpserver main.cpp 12345678910#include <QCoreApplication>#include "httpserver.h"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); HttpServer server; return a.exec();} httpserver.h 1234567891011121314151617181920212223#ifndef HTTPSERVER_H#define HTTPSERVER_H#include <QObject>#include <QTcpServer>#include <QTcpSocket>class HttpServer : public QObject{ Q_OBJECTpublic: explicit HttpSer ...
2.QT使用tcp通信
Created2025-03-23|Cpp_Socket|c++•cmake•Qt6•ipv4•ipv6
1. Qt6使用tcp协议建立连接后在客户端发送一条文字消息到服务器端而后断开连接。编写两个使用qt6框架开发的程序一个是服务端一个是客户端,Qt6使用tcp协议建立连接后在客户端发送一条文字消息到服务器端而后断开连接,无ui界面,按照qt风格分开声明与实现,参考qwiget模板但是没有ui。 实现一个最简单的 一次性连接: 客户端:启动后连接服务器 → 发送一条文字消息 → 断开连接 服务器:监听端口 → 接收连接 → 读取消息 → 打印到控制台 无 UI,但结构参考 Qt Widget 模板(main.cpp + 一个 QObject 派生类,分头文件和实现文件) Qt6 + CMake,客户端和服务端是两个独立项目 1.tcpserver main.cpp 12345678910#include <QCoreApplication>#include "tcpserver.h"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); TcpServe ...
1.QT使用udp通信
Created2025-03-23|Cpp_Socket|c++•cmake•Qt6•ipv4•ipv6
1. Qt6使用udp协议在客户端发送一条文字消息到服务器端。编写两个使用qt6框架开发的程序一个是服务端一个是客户端,单独使用cmake管理项目,Qt6使用udp协议在客户端发送一条文字消息到服务器端,无ui界面,按照qt风格分开声明与实现。 1.udpserver main.cpp 12345678910#include <QCoreApplication>#include "udpserver.h"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); UdpServer server; return a.exec();} udpserver.h 12345678910111213141516171819202122#ifndef UDPSERVER_H#define UDPSERVER_H#include <QObject>#include <QUdpSocket>#include <QHostAddr ...
windows驱动开发39.利用结构体实现一个控制码多个功能的驱动通信方式
Created2025-03-13|Drvier|C•Drvier•WindowsDriver
利用结构体实现一个控制码多个功能的驱动通信方式✅ SharedProtocol.h(通信协议头)12345678910111213141516171819#pragma once#define MAX_PAYLOAD 512// IOCTL 定义#define IOCTL_EXCHANGE_MESSAGE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)// 消息类型typedef enum _MESSAGE_TYPE { MSG_TYPE_SEND = 1, MSG_TYPE_QUERY = 2} MESSAGE_TYPE;// 用户层传入结构体typedef struct _USER_REQUEST { MESSAGE_TYPE MsgType; ULONG PayloadSize; CHAR Payload[MAX_PAYLOAD];} USER_REQUEST, *PUSER_REQUEST; ✅ Common.h ...
123…21
avatar
Theqiqi
Articles
210
Tags
95
Categories
22
Follow Me
Announcement
This is my Blog
Recent Post
101.使用Grop网站提供的api2026-01-03
9.压测2025-03-27
8.Linux Socket并发模型http服务器2025-03-27
7.web服务器中收发REST接口2025-03-27
6使用c语言与linux系统写一个web服务器,解析并响应get与post请求2025-03-27
Categories
  • C with Socks16
  • C_Sound10
  • C_Windows_Graphi9
  • Cpp5
  • Cpp_Socket4
  • C语言在Windows中实现抓包4
  • C语言的万种用法9
  • Debian1
Tags
C++ Websocket Socks5 REST API rufus ISO cmake c_windows_driver OpenGl Debian MySql mysql Drvier x86汇编程序 System qemu Http http AI first pragram Direct2D TCP 64位汇编程序 Linux Desktop make WindowsDriver link nasm Socks html ipv6 Cmake Python windows driver Ipv6 sql UltraISO Capture Socket
Archives
  • January 20261
  • March 202558
  • February 202523
  • September 20242
  • August 202471
  • June 20242
  • March 20245
  • February 20248
Info
Article :
210
UV :
PV :
Last Update :
©2020 - 2026 By Theqiqi
Framework Hexo|Theme Butterfly
Search
Loading the Database