- 博客(230)
- 资源 (7)
- 收藏
- 关注
原创 使用硬件调试器认识arm64的四大特权级
加上intel的系统管理模式,又加了一层。SMM像如来佛的手掌心,其他层像孙悟空。今天出差回来,看录像学习arm相关知识。看的是看雪学苑的视频号。armv8重新定义软件世界.arm源自英国剑桥,定义了更合理的抽象。arm分为4大特权级别。分为普通世界和安全世界。上面是可信区监视器。虚拟化技术后,增加了地下室层,VMM:虚拟机监视器。通过读寄存器可以知道当前在哪个级别。布局:内核在ring0。
2025-05-27 21:22:24
157
原创 软件调试纵横谈-18-页堆
周日继续看录像学习,页堆。书接上回,FreCheck程序在free时才检测到堆块被破坏,需要启动页堆,提前到堆块被破坏时就出异常。
2025-05-18 10:32:18
920
原创 软件调试纵横谈-16-堆概要
周六,不想去加班了,在家边看录像边继续学习堆。工程上的dmp文件提示堆校验问题,前天学习后用windbg输出了一些内容,还是不太够,今天继续学习堆知识,看看有没有其他思路。总之内存堆被破坏,是很难找到问题的。
2025-05-17 10:56:15
302
原创 漏洞战争-读书笔记-堆溢出原理
今天学习漏洞战争这本书,作者学医出身,凭着兴趣进入软件安全领域,后在腾讯安全实验室。--2017年到现在8年了,这本书竟让放到一个纸箱子里面后没有看过。今天拿出来看看。正好在分析一个堆内存被踩的问题,寻找一些灵感。3.2溢出原理。程序很简单:申请0x10大小的堆,strcpy了一个0x20大小的字符串,堆的边界就被破坏了。
2025-05-15 12:57:28
599
原创 何人传来空指针-GDB调试
CPU都是工作在保护模式,X86支持多种工作模式,上电后是实模式,只有16位,进入操作系统,操作系统会切换到保护模式,内核代码也是映射到每个进程当中的。内核空间是共享的,一人破坏影响其他人。代码,每个进程的地址空间,低地址是低特权的用户态代码使用的,高地址给高特权的。后台服务随机崩溃,出现著名段错误:segmentation fault。segmentation fault是。待续,出去吃午饭了...
2025-05-11 11:17:15
262
原创 虚幻引擎作者采访
一直学习,大学学的机械,各种数学/力学知识,顿悟时刻,就能放到游戏引擎里面了。学习新知识并整合它们,程序员就要大量编程,并不断学习新知识提升自己。大约工程学很有用,我在马里兰大学,学了大量数学知识,还学了严谨的解决问题的方法。他哥哥比他大16岁,已经在加利福尼亚工作了,他11岁在哥哥的IBM PC上开始编程,直到20岁,大约训练了10000-15000小时。EPIC起源于一个文本编辑器,将光标编程一个笑脸,然后改为文本游戏,然后继续发布新产品。约翰.卡马克,不停重写代码,优化实现,直到找到最优解决办法。
2025-05-05 23:06:15
420
原创 使用DCI和RTIT技术进行精准调优--看录像
DCI技术即通过USB3.0接口去访问调试目标机的JTAG组件,凡是运行在CPU上的代码均可以进行调试,这就没有了使用WinDBG调试时,会出现的不能调试敏感代码的问题,并且没有反调试的方法;如果想要提高调试技术的话,利用DCI技术去辅助自己,无疑是上乘的选择;1. 2012年以后的新的CPU才支持,当然现在是2025年了,大部分都支持。2. 讲课看来是2020年,nanocode还不完善,把ubuntu解析成了win7,这个工具看来还是在wind不过的思路基础上开发的。
2025-05-01 17:39:37
219
原创 windbg-A complete guide for Advanced Windows Debugging part1
生成了pch.h, 而不是stdafx.h, 查了一下,是因为vs2017开始,默认预编译头文件名称从stdafx.h更改为pch.h(Precompiled head的缩写),pch命名更符合现代C++标准,避免stdafx.h中隐含的“Standard Application Framework”历史包袱,尤其适合跨平台或非windows专有项目。根据看上面的录像,用的_tmain入口的程序,不是正常的main入口,这应该是用的向导生成的。先用vs2022创建一个简单程序。
2025-04-24 18:50:26
233
原创 初次尝试Ghidra
最近看京东读书上有本书叫《Ghidra权威指南》,竟然是美国国家安全局出品的逆向工具,我真是孤陋寡闻,第一次听说。安装指导看,需要JDK21, 竟然是JAVA写的,我正好前些日子刚刚更新了JDK21,下载解压就能用,痛快。书上的例子在哪里,问了一下 wenxiaobai.com/chat ,很容易找到。第一次见这么强大的工具,有时间要好好学习一下。最新版本竟然是上周发布的,看来很活跃啊!迫不及待,打开ch04的exe文件。
2025-04-22 21:13:35
393
原创 在调试器下...
调出任务管理器,在view菜单中的列选择列表中选择page faults: 缺页异常总次数。PF Delta:自上次更新后缺页异常的新增次数,默认每秒更新一次。接下来分别按page faults, pf Delta和CPU使用率指标对进程排序,找出这几项指标高的进程.大约2012年,张老师在程序员杂志上写过一篇:在调试器下看阿里的软件兵团。这篇文章在优快云搜了一下,竟然没有完整版。第一步:找缺页异常多的进程。
2025-04-16 13:02:10
237
原创 sourceinsight安装,为postgresql学习做准备
一番搜索,找到2个版本,我都试过了,可以安装上。2025年如果有时间,要学习一下postgresql源码,推进武汉大学的彭志勇/彭煜玮 写的《PostgreSQL数据库内核分析》--新南威尔士大学【中英⚡Postgres数据库实现原理|COMP9315 2018。安装si3.5也是有效的,下面链接明明是3.5,作者偏说是4.0,不知是何用意。--看他用的是source insight 4.0。安装下面的程序有效:si4.0。
2025-04-04 16:58:52
154
原创 逆向工程核心原理-第二章-helloworld
在EP代码的00FE126C地址处使用Step Into(F7)指令,进入40270C函数--cookie函数,不知道啥意思,和书上并不一样。下载了最新的1.10工具,这个工具看网站上说已经停止开发了,可惜了。还有1个plugin,不知道啥作用,暂不安装。用我的vs2022编写了一个简单的helloworld程序,注意生产的是win32,release。未完待续,这个OllyDbg工具用起来还是比较难的。很厉害的样子,可以不会用,按书上的一步一步走吧。单步调试好像F8走几步就卡住了,不知道怎么解决。
2025-04-02 23:48:23
819
原创 软件大局观--演讲记录
0-10000,000代表4K,10代表16,16页内存,PAGE_NOACCESS代表不可访问,这时操作系统为支持C++的内存0不可访问的定义,支持程序员的编程习惯,这段区域代表空指针。设计非常好,~0,表示0号线程的栈。后面是进程ID.线程ID,栈分为3个部分,PAGE_READWRITE是正在用的,PAGE_GUARD这时保护的,用完了碰到GUARD触发缺页异常,会增长栈grow。winmine.exe的位置:我们VC编译的放到4000位置,微软写的放到10 00000,16M的位置。
2025-03-30 19:41:57
875
原创 算法-第四版
读完这个再读 算法导论,算法导论 也出了第四版,朋友发给我一个PDF文件,躺在电脑里面几年了,没有读,准备导入微信读书,学习完算法后再学,希望到时候能新写一篇体验。看来电子版还是有好处的,在京东读书上买了电子版,准备2025重新阅读一下,踏踏实实的提高算法基础,不被当今AI热潮的急功近利影响,修炼基础内功。因为微信读书我有会员,可以阅读本书,我就是想从京东读书买下来,花了银子,认认真真的读一遍,微信读书主要听一些新书,有好的再买。另外,gongsi屏蔽了微信读书,但可以看京东读书,呵呵,你懂的。
2025-03-30 15:37:56
421
原创 angular19-官方教程学习
C:\Program Files\nodejs\ 目录改为 C:\nodejs\。卸载老的nodejs 20.10.0,安装最新的LTS版本。提示更新npm到最新版本,我就更新一下。已经是19.0.4最新版本了,完美。最新LTS版本已经是22.12.0。重新更新angular。查看angular版本。
2024-12-08 15:58:50
1369
原创 springboot学习-spring-boot-data-jdbc分页/排序/多表查询的例子
上次使用的是JdbcTemplate实现的,是比较老的方式,重新用spring boot data jdbc和jdbc client 实现一遍。也比较一下这几种的编码差异。数据库方面JAVA给了太多选择,反而不好选了。我们需要在代码中动态构建SQL语句来解决这个问题。--这里就直接写,不用占位符了。直接就报错了,才改为了jdbcTemplate.注意有个坑:SQL语法错误引起的,特别是在。JDBC Client应该也行,没有试过。验证通过,这个方法很好。
2024-11-30 18:37:35
358
原创 springboot学习-分页/排序/多表查询的例子
最近喜欢上了springboot,真是个好的脚手架。今天继续学习分页/排序/多表查询等复杂功能。按步骤记录如下。
2024-11-27 20:35:19
633
1
原创 springboot学习-jdbc,jdbc-client,spring-data-jdbc
除了JDBC,当然还有另外一条JPA路线。也就是用hibernate。晚上又看了Dan Vega的视频,讲解了jdbc在spring 的发展史。总之,不同流派各有千秋,类似华山派的剑宗和气宗,谁也不服谁。发言者经验一个网站,教人调优持久层。个人网站也值得一看。
2024-11-25 23:02:09
451
原创 springboot学习-一个完整分页查询的例子
继续学习springboot 3.4.0,今天做一个完整的例子:springboot3.4.0+JDBC API+spring data jdbc+H2 database+Thymeleaf,https://start.spring.io/H2 Database缺省是内存数据库,要手工改为文件数据看,一遍数据能长期保存。application.properties配置文件甚至数据库的相关信息配置后启动,就可以通过h2-console查看数据库了当然这个RUN数据库是resource/schema.sq
2024-11-25 20:41:51
470
原创 springboot学习-openapi
springboot3.4使用swagger2.0,发现不能运行了,网上查了一些,应该是swagger还在使用javax.servlet,而springboot3.4.0已经使用jakarta.servlet,所以根本启动不了。加入后还要定制config类,但是我是找不到org.springdoc.core.models.OpenAPI,暂时不实现了,加了这个依赖,就能直接使用接口了。神奇的是,这些接口可以用于测试,get user是可以调用成功的,完美。最新版本是v2.7.0。
2024-11-24 19:08:10
486
原创 springboot学习-lombok
最新的是23.0.1了,这是发布版本,下载后看看怎么样。然后打开idea,还是报错,发现还是用的jdk24,在project structure里面修改为23.0.1,然后rebuild,就可以编译通过了,完美。下一步就是演练springboot的各种特性了,我最期待的是可以脱离虚拟机,编译成exe文件,这个特性稍后试试,看看后续能否有JAVA编写,exe发布一些小工具。今天学习一下springboot,为了减少set,get的无效编码,特意选择了lombok。中生成pom.xml真是特别方便。
2024-11-24 11:16:56
1252
原创 gmtime不支持多线程并发
这两个日期有一个客户和对端的日期对上,另外一个对不上,我怀疑对端有两个日期,对端程序员说就一份数据,很奇怪。既然双方都认为没有问题,只能靠日志报文检查了,因为偶发,还很难抓住,原来也出过类似问题,都不了了之了,这次想证明是对方问题,就下功夫抓报文,终于抓到了,结果大跌眼镜,同样的整数值,时间转换函数偶发转换成另外的值了,竟然是我们这边的问题。ACE其实是个老古董了,封装的是操作系统libc的库,问了一下豆包,说可能线程不安全,但也不确定,建议看ACE源码,看来ACE相关的信息太少,大模型都给不出确切答案。
2024-11-15 16:45:39
341
原创 缓冲区溢出,数据被踩的案例学习
这个代码通俗易懂,就一个.c文件,主要是使用最传统的gets方法,没有判断输入的内容是否超过了缓冲区长度,造成了buffer的输入覆盖了token内存,token内存被填入了刻意准备的值,绕过了鉴权,登录了系统。export https_proxy="https://xxx:8080",为的是能下载符号。r -- run起来,会提示下载源码,前面我们设置的proxy,顺利下载。继续在ubuntu上学习GDB,今天要学习的是缓冲区溢出。l --list一下源码,可以看到。b main -- 设置断点。
2024-11-14 23:02:36
942
原创 vscode ssh+clion+idea等本周小结-2024.11.3
本周工作并不轻松,但是还是抽了写时间做了些杂七杂八的事情,没有啥头绪,随便记录一下备忘。尤其clion的安装,现在不写估计就忘记了,下次更换机器又不会安装了。
2024-11-03 15:43:13
562
原创 强大的x86指令
一种典型的使用场合就是用来循环处理一个数组,ECX指向数组的基地址,EDX做循环变量,索引数组的元素,而数组元素的长度可以为2、4、8三种。4)最后的rep stos指令是具有循环功能的串指令,它把EAX的值存入EDI指向的内存,然后自动递增EDI,递减ECX。今天调试一个应用程序时,偶然中看到一条很长的x86指令,机器码有11个字节,目标操作数是一个堪称复杂的表达式,于是摘录下来。这3个寄存器的值保存到栈上,防止当前函数破坏了它们的值,根据约定,返回到父函数时这几个寄存器的值应该保持不变。
2024-10-30 19:13:24
899
原创 Linux常用错误码
标准C中便定义了错误码机制,包括记录错误码的errno变量和查找errno对应含义的strerror API。posted on 2013年12月30日 20:41 由。
2024-10-15 23:03:10
939
原创 gtk4+gdb线程观察-线程卡牢为哪般
这个程序我看是2023年上传的,用的是gtk2,在我的机器上死活跑不起来,界面直接死掉退出。假期出去几天,10.6开始在家休息两天,这两天仔细研究了这个程序,终于将gtk2迁移改造为gtk4,可以在我的ubuntu 上运行了。不过有个缺点,就是界面不能换行,加了\n就运行异常,估计还是没有学好gtk4。这也不影响使用GDB调试这个多线程程序,让我们开始结合这个slock.cpp(我缩短了文件名称)来操练gdb多线程调试吧。lsof -p 30133 --列出打开的文件描述符。可以通过lsof来获取。
2024-10-07 21:31:32
926
原创 gtk4学习
前几天学习GDB,下载了张老师写的一个GTK图形程序,在我ubuntu机器上运行不了,界面直接死掉了。所以今天准备简单学习一下gtk。
2024-09-28 18:51:31
1077
原创 winamp开源了
记忆中这是MP3播放器,当年使用很多,看说明是1997年发布的。看代码目录,是QT开发的,按说Linux下应该也能用。开发公司的名字也比较有意思Nullsoft.
2024-09-26 14:18:32
267
原创 C++20-协程
当然还有个比较令人烦闷的事情,VS2022里面,std::suspend_never,std::coroutine_handle,co_await编辑器都标识为错误,这是为啥,VS2022不是号称支持C++20吗?昨天看到一本书,《现代C++语言核心特性解析》,第33章是协程,我机器上安装了vs2022,肯定是支持的,直接运行第一个例子就报错了。显示少了#include <coroutine>,加上后不行,又把项目的C++语言设置为C++20,缺省是C++14。搜了一大圈不明就里,现在搜索质量真是差。
2024-09-25 12:35:33
393
原创 gtk安装和测试
linux的图形库有qt和gtk, qt功能强大,但是商用要付费。gtk是个免费开源的,也不错。现在linux的类似windows办公环境基本是gtk编写的吧(我猜)。linux下的wps好像是用qt写的。提示已经安装,难道是前面的一堆包包括了?不过查看了一下,似乎不包括,而是包括了gtk3-devel-3.22.30, 难道最新的gtk变成3.x版本了?gtk2.x已经过时了,不管了。有个小缺陷,关闭窗口进程也不退出。万里长征走出了第一步。就会弹出一个小窗口,实验成功。闲言少序,开始gtk.
2024-09-23 21:42:13
869
原创 Kubernetes网络权威指南-读书笔记
不畏浮云遮望眼,自缘身在最高层” --让我们一起攀登云原生网络这座高峰。Kubernetes网络权威指南 读书笔记。为读者呈现整个云原生网络的知识体系。基础作为“暖场嘉宾”,
2024-09-23 09:57:21
201
原创 学习GDB
GDB是linux调试的基本工具,虽然比起windbg来说略显简陋,但也没办法,linux的调试工具只有它了。gdb, gcc,g++先要安装,就不讲了,linux系统都是自带的,手工升级太难,就用系统自带的吧。stp---是把信息压栈--arm64 一次压一对pair:bp,lr。kill -s SIGSEGV pid --段错误。bt -- backtrace 显示栈。frame 3 --我们自己的代码。frame 1 --回到1号栈帧。frame 0 --回到0号栈帧。ctrl-c停不下来。
2024-09-09 08:17:32
408
原创 install zed的失败经历
微信上跳出新闻,rust开发的zed编辑器速度非常快,比vscode体验好很多,处于对rust的好奇,在机器上安装,最终折腾一通失败了,记录一下,对在linux安装经验也是一个总结。2.改为手工下载软件,运行提示 version `GLIBC_2.29' not found (required by ./zed),我用的是glibc2.28,正巧差一个版本,glibc是linux基础库,试了不能升级(公司内部版本,ubuntu估计是可以的)3.按zed提示,源码安装,恰好前期安装了rust,直接安装。
2024-09-04 10:58:54
1408
5
原创 COMP9315-week2-lecture1
2/688/6811/68close(fd)fsync(fd)E.g.int fd;} *DB;int start;int npages;...} *Rel;21/68return db;free(db);return r;free(r);
2024-08-29 20:53:01
1197
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人