大熊猫侯佩
一枚贪吃路痴还未秃码农。CSDN 博客专家,iOS 与 Swift 版块版主,热爱苹果开发。
人生看淡,不服就干!
展开
-
有趣的小实验:如何验证 Silicon 处理器是否支持 SVE 指令集?
在本篇博文中,我们讨论了验证 Silicon 处理器(包括 A 系列处理器)是否支持 SVE 指令集的方法,并对相关有趣的背景知识做了详细介绍。原创 2023-06-28 22:57:09 · 518 阅读 · 10 评论 -
超详细:ARM64 汇编实现 C 标准库中的 memset() 函数
在本篇博文中,我们一起详细讨论了如何用 ARM64 汇编实现 C 语言标准库中的 memset() 函数,并比较了各种不同情境下 memset() 汇编代码的细节差异。原创 2023-06-27 21:39:05 · 1580 阅读 · 9 评论 -
MacOS 中 ARM64 汇编 ldr =address 伪指令导致运行时崩溃的原因及解决
在本篇博文中,我们详细讨论了 MacOS as 汇编器(ARM64)中 ldr = 伪指令的功能,并介绍了为什么不能用它来获得标签(Label)的地址,并提供解决方法。原创 2023-06-25 10:44:52 · 1363 阅读 · 6 评论 -
iOS系统逆向工程之神探侯佩智破量子矩阵
在任何一部编程悬疑动作片里,每一个超级英雄都有一个颓废的开始…本故事纯属虚构如有雷同洗洗睡吧警告:未经允许禁止转载!!!楔子未知星球。雨还在下,漆黑的乌云压抑的想吐。极度的黑暗中,一枚红点忽明忽暗…一团黑影斜靠着墙壁,使劲的吐着烟圈…墙壁上到处都留存着纳米激光射线刻着的"S w i f t",“S w i f t U I”,“C o m b i n e”,"i O S"等残破烙印,仿佛还在宣告183年前那场世纪大战有多么惨烈…“卧底雨燕党已经211天了,还是没能查出到底他们.原创 2020-08-05 16:24:31 · 1552 阅读 · 2 评论 -
[公告]汇编提问的智慧
由于论坛要求强制结贴,so...放到偶的blog中来为了便于别人更好的回答您的问题,请各位朋友在汇编区发帖时注意以下几点: 0 如果编码时遇到问题,不要随即就将源代码贴上来让别人帮你找BUG。建议先自 己找找原因,调试一下。50%以上的问题都是由于粗心所致,检查源代码和调试程序 完全可以自己解决。 1 如果有源代码原创 2007-10-09 17:50:00 · 4584 阅读 · 9 评论 -
“不死鸟”号历险记---和扫雷过不去篇(无厘头版)
“不死鸟”号历险记---和扫雷过不去篇(无厘头版) 程序逆向初步之二:测试环境Windows XP SP3 (警告:本文情节纯属虚构搞笑,没有讽刺任何现实国家机构的意思哦)(建议:在看以下文字时,最好头脑浮现鸟山明阿拉蕾中漫画人物的形象以达到较好的YY效果。)(还是那句老话,老鸟自行飘过。)正义的hopy – 加菲邪恶的hopy – 阿宝原创 2009-09-03 14:11:00 · 2402 阅读 · 1 评论 -
用户层关闭瑞星2009杀毒软件安全保护
我写这个纯粹是hacker精神,如果被滥用做病毒木马一类的邋遢东东,可跟偶没关系哦。 原理very简单,我发现瑞星监控主要在RavMonD进程中,如果打破其与内核的联系,则瑞星监控功能就无法正常工作了,怎么打破联系呢?如果是进内核的话当然有很多的办法,从而没有挑战性了,况且RavMonD会阻止用户进程去加载驱动或者动注册表的关键地方,比如run子键。下面上测试代码: i原创 2009-07-29 18:49:00 · 2316 阅读 · 6 评论 -
[原创]和Taskmgr过不去篇(无厘头版)
Hook入门级文章,主要想培养一下偶写文章的感觉,老鸟无视…我想看看技术文章能不能无厘头的写,如果效果不错的话,准备更上一层-----用我的原创漫画表达。:) (警告1:文章中有部分“限制级”词语,请11岁以下弟弟妹妹误入)(警告2: 修正警告1,不是“误入”,是“勿入”哦,我没有做暗示哦…)正义的hopy – 加菲 邪恶的hopy – 阿宝时间: 终结者2018年场景: 地原创 2009-07-01 09:21:00 · 4896 阅读 · 10 评论 -
原创]我是如何破解的
闲来无事,想找几张老游戏玩玩(主要是因为机器太老新游戏跑不动),翻出一张,序列号我有(正版哩),但我忽然想很久没破解了,不如再试试破解吧。首先用 ollydbg (已成为习惯) 调入光盘根目录下的 setup.exe 文件,单步运行后会突然跳入全屏的安装画面,看来有些东西错过了。打起精神重新来过,没几步到了 CreateProcess 这一句,察看其对应的文件为 /setup/setup.ex原创 2007-04-12 08:14:00 · 2918 阅读 · 5 评论 -
用windbg显示特定进程虚拟地址的方法
1 必须使用Livekd.exe启动原创 2014-07-03 21:29:53 · 1783 阅读 · 0 评论 -
[原创]NT系统信息察看工具 : NtInfoGuy
NT系统信息查看工具,GDT,IDT,SSDT,SSDTSDW,SYSMOD,SYSVAL原创 2010-07-17 17:40:00 · 5259 阅读 · 10 评论 -
[原创](2010.02.07更新)忙里偷闲中写的一个系统物理/虚拟内存查看器。
[原创]忙里偷闲中写的一个系统物理/虚拟地址内容查看器 都是老技术,没啥新意。为了方便我在调试中要了解虚拟或物理内存的情况编写的,懒得装WinDbg 的情况下比较方便。程序在gccNTDrvFrame(我以前写的gcc下的NT驱动通用开发包)的基础上扩展, 并且由于直接使用微软“特有”的__try,__except功能方便些,故和VC 2008生成的obj一起连接,原创 2010-01-09 19:09:00 · 9437 阅读 · 17 评论 -
[原创]W2k Driving 学习笔记(二)使用GCC创建 Windows NT 下的内核DLL
再温习>分层驱动程序一章的时候,看到了关于紧耦合驱动连接方式,这种方式不依赖于I/O管理器的串联,而是直接调用内核例程,这样可以大大的提高驱动的执行效率。 为了实现这样一种功能,必须提供一种类似于在用户模式中DLL的机制,只不过该"DLL"是加载到内核中的。其实Windows NT 内核本身早就利用了这样机制,比如Hal.dll、ntoskrnl.ex原创 2009-02-21 12:04:00 · 2460 阅读 · 3 评论 -
[原创]W2k Driving 学习笔记(一)内核线程及同步
[大体流程]Win32与Kernel交互,从User层向内核发送2个请求:0 IOCTL_Start_Thread : 从内核新建一个线程,最多建立MAX_THREAD_NUM个线程;1 IOCTL_Stop_Thread : 关闭刚才建立的所有线程;每个线程做同样的事,每次将变量Count增加1,使用一个FAST_MUTEX来同步加1操作。线程过程如下,没什么特别说明的,其中原创 2009-02-20 08:01:00 · 2786 阅读 · 4 评论 -
[原创]再谈 unlocker 编程”探险”及工作原理
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid原创 2008-11-10 14:39:00 · 10816 阅读 · 23 评论 -
[原创]浅谈如何使用gcc开发NT核心驱动程序
[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来。诚然,用VC 配合 WINDDK 的确工作的不错,但或许我们可以让其变得更简单更完善一些。 其实偶一般是用 Masm32v9 + EditPlus2 编写 NT内核驱动,仅此而已。从环境搭建的便捷性和编写代码的灵活性来说无疑原创 2008-04-11 13:53:00 · 2829 阅读 · 3 评论 -
[转贴]了解 Windows Vista 内核
暂时3部分,以下是连接:了解 Windows Vista 内核:第一部分 概览: 线程优先级和计划 基于文件转载 2007-09-14 23:27:00 · 3508 阅读 · 3 评论 -
[转贴]Gloomy对Windows内核的分析(研究CreateProcess)
(转载)Gloomy对Windows内核的分析(研究CreateProcess)我给出一个反汇编Win32 API函数CreateProcess的例子,来演示研究子系统的技术,同时演示Win32是如何与Windows NT的执行系统协同工作的。从MSDN中得到函数原型:BOOL CreateProcess( LPCTSTR lpApplicatio转载 2007-09-10 16:33:00 · 2147 阅读 · 0 评论 -
[转贴]在Windows 2003中HOOK ZwCreateProcessEx
以下部分全部为转贴,特此声明!***********************************************************在Windows 2003中HOOK ZwCreateProcessEx创建时间:2005-03-09文章属性:原创文章提交:suei8423 (suei8423_at_163.com)作者:ZwelL工作需要,想控制进程的创建,于是HOO转载 2007-09-10 16:23:00 · 2398 阅读 · 0 评论 -
[转贴]提升进程权限为debug权限,无法禁止进程
提升进程权限为debug权限,无法禁止进程2007-03-30 20:58 在2004年11期黑防上刊登了《小工具巧删Guest/Administrator账户》这篇文章,有不少朋友来信询问工具是如何编写的,其实这个工具里面大部分代码是我拷贝FU_Rootkit过来的。既然朋友们喜欢,这几天我又转载 2007-09-10 16:16:00 · 3530 阅读 · 2 评论 -
Mac OS X版本的sublime text 3安装汇编语言语法支持
sublime是个好东西,小巧、功能强大而且跨平台! 不过默认的语法里没有对asm的支持,这让本猫情何以堪… 下面介绍一下Mac OS X中如何给sublime安装汇编的语法和自动汇编命令补全支持。1 首先要找到sublime的Packages的安装目录,可以在sublime程序菜单中找到Packages的目录: 我系统中的目录为:/Users/apple/Library/Applicat原创 2015-04-13 15:23:50 · 11756 阅读 · 7 评论 -
nasm预处理器(4)
nasm定义了一套标准宏,当开始处理源文件时,这些宏都已经被定义了,如果希望程序在执行前没有预定义的宏存在,可以使用%clear清空预处理器的一切宏。__NASM_MAJOR__ 主版本号 __NASM_MINOR__ 次版本号 __NASM_SUBMINOR__ 子次版本号 __NASM_PATCHLEVEL__ 补丁号 __NASM_VERSION_ID__ nasm版本id __NA原创 2015-04-07 15:24:51 · 1134 阅读 · 0 评论 -
nasm预处理器(3)
nasm提供一个限定符.nolist,可以包含它到一个宏定义中,这样该宏就不会在列表文件中被展开;限定符 .nolist直接放到参数后面:%macro foo 1.nolist条件汇编 和C预处理器类似,nasm允许对一段源代码只在某特定条件满足时进行汇编:%if<condition>%elif<condition2>%else%endif%ifdef和 %ifndef 测试单行宏是否存在,原创 2015-04-07 14:05:10 · 1250 阅读 · 0 评论 -
nasm预处理器(2)
多行宏 %macro:%macro foo 2 push rax push rbx mov rax,%1 mov rbx,%2 pop rbx pop rax%endmacro宏名称后的数字代表宏参数的个数,宏主体中的%1和%2分别代表实际的参数。使用如下方式调用:foo 0x11,0x22如果宏参数中包含,号,可以将参数用{}包围起来。%macro原创 2015-04-07 11:53:13 · 1128 阅读 · 0 评论 -
nasm预处理器(1)
与处理器将所有以反斜杠结尾的连续行合并为一行。单行的宏以%define来定义;当单行的宏被扩展后还含有其他宏时,会在执行时而不是定义时展开。%define a(x) 1+b(x)%define b(x) 2*xmov ax,a(8)会被最终展开为mov ax,1+2*8,但宏b不是在定义宏a时展开的。%define定义宏是大小写敏感的,可以用%idefine来定义大小写非敏感的宏。 如果有嵌套原创 2015-04-07 10:46:19 · 1242 阅读 · 0 评论 -
nasm中的表达式
nasm表达式支持2个特殊的记号 $和$$;前者标识其所在源码行的开始处地址,所以你可以这样写死循环:jmp $而后者标识当前段开始处的地址,你可以通过:$-$$找出当前代码在段内的偏移。 nasm提供以下运算符: | ^ & << >> + - * / //(带符号除) % %%(带符号模) 因为%符号也被宏预处理器使用,所以必须保证带符号和无符号的模操作符都必须跟有空格。- +(一元+和原创 2015-04-07 10:07:38 · 1258 阅读 · 0 评论 -
nasm汇编一些需要注意的地方
经常用msam或tasm的童鞋一下转换到nasm下可能觉得不怎么适应,它们应该先去晓习一下gas的语法,然后就适应了…that‘s only a joke! :)section .datav101 dq 0x1234567811223344;代码中有mov rdx,[v101]mov [rax*2],rdx看一下生成的机器指令:0x4000b0 <_start>: 0x4000ba <_sta原创 2015-04-07 09:28:04 · 2738 阅读 · 0 评论 -
Mac OS X汇编语言常识
首先OS X的syscall表位置在/usr/include/sys/syscall.h原创 2015-04-06 21:16:23 · 5968 阅读 · 0 评论 -
linux中syscall调用号查看
可以用locate查找:locate unistd_32//或者locate unistd_64以下是本猫在ubuntu下返回的结果:/usr/src/linux-headers-3.16.0-33/arch/sh/include/uapi/asm/unistd_32.h//和/usr/src/linux-headers-3.16.0-33/arch/sh/include/uapi/asm/原创 2015-04-06 11:27:40 · 4332 阅读 · 0 评论 -
javascript、ruby和C性能一瞥(3) :上汇编
在博文(1)和(2)里分别用了4中方式写一个素数筛选的算法,分别是javascript in browser、node.js、ruby和c;最终的结果是c最快,node.js其次,js in b虽然也不慢,但极不稳定,所以排在第三,ruby最慢。现在我们在linux64中用汇编语言重写sieve算法,看看动用最终的武器:汇编语言,我们能不能进一步优化素数筛选算法。如果忘了算法逻辑,不要紧,下面分别再原创 2015-04-16 09:42:22 · 1858 阅读 · 0 评论 -
Mac OS X下64位汇编与Linux下64位汇编的一些不同
1 首先系统调用号大大的不同;mac64和linux32的系统调用号也不同(虽然局部可能有相同)2 mac64的系统调用号在:/usr/include/sys/syscall.h可以查到,但是调用的时候其值要加上0x2000000,可以写一个宏处理:%define mk64 0x2000000+使用方式如下:mov rax,mk64 1 ;exit NOmov rdi,0原创 2015-04-13 18:08:01 · 4126 阅读 · 7 评论 -
linux下64位汇编的系统调用(5)
看到这里大家都基本知道了如何进行linux下的汇编系统调用;不过有些童鞋可能会问:那些C库中函数里为我们解决的额外汇编代码你是怎么知道的? 好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑… 比如举个例子,那上一篇里的mmap C库函数来说,首先写一个C代码:#include <stdlib.h>#include <stdio.h>#include <stdbool.h>#inclu原创 2015-04-12 10:33:37 · 1877 阅读 · 0 评论 -
linux下64位汇编的系统调用(4)
经过上一篇的铺垫貌似可以很轻松的用汇编写出mmap的代码来,可仔细一看,还是有不少问题需要解决:1.系统调用mmap如果出错并不直接返回MAP_FAILED(-1),而是一个“类似”值;C库中的mmap函数对其做了包装,使其最终返回-1;如果我们直接调用mmap syscall,则这些事必须自己来做。2.C库函数如果出错会设置errno的值,而在汇编中没法直接用:extern errno的方法使用外原创 2015-04-12 10:12:47 · 2748 阅读 · 0 评论 -
linux下64位汇编的系统调用(3)
背景知识基本交代清楚了,下面我们实际写一个小例子看一下。代码的功能很简单,显示一行文本,然后退出。我们使用了syscall中的write和exit调用,查一下前面的调用号和参数,我们初步总结如下:write(即sys_write)调用号为1,需传递3个参数unsigned int fdconst char *bufsize_t countexit(sys_exit)调用号为60,只需传递一个错误原创 2015-04-12 09:50:03 · 2756 阅读 · 1 评论 -
linux下64位汇编的系统调用(2)
知道了syscall调用号之后还不算完,还要搞清楚2件事:1 每种调用号需要传递哪些参数; 2 调用如何传递参数以及结果如何返回;第一个问题的答案是: 在linux系统中某个程序执行时进行的系统调用可以通过strace命令来查看,solaris中对应的命令为dtrace,而mac os x中可以通过类似的dtruss命令来查看。当进程已经处于 D 状态(uninterruptible sleep原创 2015-04-11 20:19:30 · 4526 阅读 · 0 评论 -
linux下64位汇编的系统调用(1)
现在基本上系统都是64位了,而64位系统下的汇编和32位有了较大的变化,无论是系统调用的接口还是C标准库的接口都和32位汇编有所不同;下面简单谈一下在64位linux下如何利用汇编直接调用系统调用。需要准备的有:1.一台linux机器:我的系统是ubuntu 14.10 x64版; 2.还要一个汇编器;我没有使用gas,而是使用了跨平台的nasm; 3.一个调试器;这里选择的不多,要不就是gdb原创 2015-04-11 19:05:47 · 4433 阅读 · 0 评论 -
linux下32位汇编调用规则
传递给系统调用的参数必须安装参数顺序一次放到寄存器中,当系统调用完成后,返回值放在eax中:当系统调用参数<=5个时: eax中存放系统调用的功能号,传递给系统调用的参数顺序依次放到寄存器:ebx,ecx,edx,esi,edi中当系统调用参数>5个时: eax中存放系统调用的功能号,全部参数应依次放在一块连续的内存区域中,同时在寄存器ebx中保存指向该内存区域的指针(内存块的首地址);li原创 2015-05-25 09:55:23 · 1736 阅读 · 0 评论 -
MASM中3中文本宏的使用与区别
=原创 2014-09-30 17:49:04 · 1342 阅读 · 0 评论 -
GCC的内嵌汇编语法
1 Overview开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇编语言,即使你有可能并不喜欢它。 如果我们选择的OS开发工具是GCC以及GAS的话,就必须了解转载 2012-12-10 21:11:33 · 1500 阅读 · 0 评论 -
[原创]抢先DriverStudio夺取机器控制权
[原创]抢先DriverStudio夺取机器控制权 废话不谈,言归正传! 大家都知道,装了DriverStudio软件(我使用的是v3.2版)的系统在启动时会显示其配置画面,(如图0所示) 图 0 这时操作系统的其他部件还没有运行。那么显示的原创 2007-09-16 15:15:00 · 2190 阅读 · 0 评论