
Asm
大熊猫侯佩最爱的运动: 用Asm搞逆向
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅博主任意付费专栏,享有该博主全部专栏一年阅读权限。
本专栏为虚拟产品,一经付款概不退款,敬请谅解。
大熊猫侯佩
非自由程序员,CSDN博客认证专家。
CSDN汇编板块版主, CSDN其他开发语言大版版主。
对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
-
原创 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:31229
0
-
原创 [公告]汇编提问的智慧
由于论坛要求强制结贴,so...放到偶的blog中来为了便于别人更好的回答您的问题,请各位朋友在汇编区发帖时注意以下几点: 0 如果编码时遇到问题,不要随即就将源代码贴上来让别人帮你找BUG。建议先自 己找找原因,调试一下。50%以上的问题都是由于粗心所致,检查源代码和调试程序 完全可以自己解决。 1 如果有源代码2007-10-09 17:50:004361
9
-
原创 “不死鸟”号历险记---和扫雷过不去篇(无厘头版)
“不死鸟”号历险记---和扫雷过不去篇(无厘头版) 程序逆向初步之二:测试环境Windows XP SP3 (警告:本文情节纯属虚构搞笑,没有讽刺任何现实国家机构的意思哦)(建议:在看以下文字时,最好头脑浮现鸟山明阿拉蕾中漫画人物的形象以达到较好的YY效果。)(还是那句老话,老鸟自行飘过。)正义的hopy – 加菲邪恶的hopy – 阿宝2009-09-03 14:11:002093
1
-
原创 用户层关闭瑞星2009杀毒软件安全保护
我写这个纯粹是hacker精神,如果被滥用做病毒木马一类的邋遢东东,可跟偶没关系哦。 原理very简单,我发现瑞星监控主要在RavMonD进程中,如果打破其与内核的联系,则瑞星监控功能就无法正常工作了,怎么打破联系呢?如果是进内核的话当然有很多的办法,从而没有挑战性了,况且RavMonD会阻止用户进程去加载驱动或者动注册表的关键地方,比如run子键。下面上测试代码: i2009-07-29 18:49:002092
6
-
原创 [原创]和Taskmgr过不去篇(无厘头版)
Hook入门级文章,主要想培养一下偶写文章的感觉,老鸟无视…我想看看技术文章能不能无厘头的写,如果效果不错的话,准备更上一层-----用我的原创漫画表达。:) (警告1:文章中有部分“限制级”词语,请11岁以下弟弟妹妹误入)(警告2: 修正警告1,不是“误入”,是“勿入”哦,我没有做暗示哦…)正义的hopy – 加菲 邪恶的hopy – 阿宝时间: 终结者2018年场景: 地2009-07-01 09:21:004560
10
-
原创 原创]我是如何破解的
闲来无事,想找几张老游戏玩玩(主要是因为机器太老新游戏跑不动),翻出一张,序列号我有(正版哩),但我忽然想很久没破解了,不如再试试破解吧。首先用 ollydbg (已成为习惯) 调入光盘根目录下的 setup.exe 文件,单步运行后会突然跳入全屏的安装画面,看来有些东西错过了。打起精神重新来过,没几步到了 CreateProcess 这一句,察看其对应的文件为 /setup/setup.ex2007-04-12 08:14:002735
5
-
原创 用windbg显示特定进程虚拟地址的方法
1 必须使用Livekd.exe启动2014-07-03 21:29:531415
0
-
原创 [原创]NT系统信息察看工具 : NtInfoGuy
NT系统信息查看工具,GDT,IDT,SSDT,SSDTSDW,SYSMOD,SYSVAL2010-07-17 17:40:004937
10
-
原创 [原创](2010.02.07更新)忙里偷闲中写的一个系统物理/虚拟内存查看器。
[原创]忙里偷闲中写的一个系统物理/虚拟地址内容查看器 都是老技术,没啥新意。为了方便我在调试中要了解虚拟或物理内存的情况编写的,懒得装WinDbg 的情况下比较方便。程序在gccNTDrvFrame(我以前写的gcc下的NT驱动通用开发包)的基础上扩展, 并且由于直接使用微软“特有”的__try,__except功能方便些,故和VC 2008生成的obj一起连接,2010-01-09 19:09:008975
17
-
原创 [原创]W2k Driving 学习笔记(二)使用GCC创建 Windows NT 下的内核DLL
再温习>分层驱动程序一章的时候,看到了关于紧耦合驱动连接方式,这种方式不依赖于I/O管理器的串联,而是直接调用内核例程,这样可以大大的提高驱动的执行效率。 为了实现这样一种功能,必须提供一种类似于在用户模式中DLL的机制,只不过该"DLL"是加载到内核中的。其实Windows NT 内核本身早就利用了这样机制,比如Hal.dll、ntoskrnl.ex2009-02-21 12:04:002195
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:002588
4
-
原创 [原创]再谈 unlocker 编程”探险”及工作原理
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object classid2008-11-10 14:39:0010271
23
-
原创 [原创]浅谈如何使用gcc开发NT核心驱动程序
[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来。诚然,用VC 配合 WINDDK 的确工作的不错,但或许我们可以让其变得更简单更完善一些。 其实偶一般是用 Masm32v9 + EditPlus2 编写 NT内核驱动,仅此而已。从环境搭建的便捷性和编写代码的灵活性来说无疑2008-04-11 13:53:002416
3
-
转载 [转贴]了解 Windows Vista 内核
暂时3部分,以下是连接:了解 Windows Vista 内核:第一部分 概览: 线程优先级和计划 基于文件2007-09-14 23:27:003275
3
-
转载 [转贴]Gloomy对Windows内核的分析(研究CreateProcess)
(转载)Gloomy对Windows内核的分析(研究CreateProcess)我给出一个反汇编Win32 API函数CreateProcess的例子,来演示研究子系统的技术,同时演示Win32是如何与Windows NT的执行系统协同工作的。从MSDN中得到函数原型:BOOL CreateProcess( LPCTSTR lpApplicatio2007-09-10 16:33:001859
0
-
转载 [转贴]在Windows 2003中HOOK ZwCreateProcessEx
以下部分全部为转贴,特此声明!***********************************************************在Windows 2003中HOOK ZwCreateProcessEx创建时间:2005-03-09文章属性:原创文章提交:suei8423 (suei8423_at_163.com)作者:ZwelL工作需要,想控制进程的创建,于是HOO2007-09-10 16:23:002152
0
-
转载 [转贴]提升进程权限为debug权限,无法禁止进程
提升进程权限为debug权限,无法禁止进程2007-03-30 20:58 在2004年11期黑防上刊登了《小工具巧删Guest/Administrator账户》这篇文章,有不少朋友来信询问工具是如何编写的,其实这个工具里面大部分代码是我拷贝FU_Rootkit过来的。既然朋友们喜欢,这几天我又2007-09-10 16:16:003201
2
-
原创 Mac OS X版本的sublime text 3安装汇编语言语法支持
sublime是个好东西,小巧、功能强大而且跨平台! 不过默认的语法里没有对asm的支持,这让本猫情何以堪… 下面介绍一下Mac OS X中如何给sublime安装汇编的语法和自动汇编命令补全支持。1 首先要找到sublime的Packages的安装目录,可以在sublime程序菜单中找到Packages的目录: 我系统中的目录为:/Users/apple/Library/Applicat2015-04-13 15:23:5011429
7
-
原创 nasm预处理器(4)
nasm定义了一套标准宏,当开始处理源文件时,这些宏都已经被定义了,如果希望程序在执行前没有预定义的宏存在,可以使用%clear清空预处理器的一切宏。__NASM_MAJOR__ 主版本号 __NASM_MINOR__ 次版本号 __NASM_SUBMINOR__ 子次版本号 __NASM_PATCHLEVEL__ 补丁号 __NASM_VERSION_ID__ nasm版本id __NA2015-04-07 15:24:51896
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:10962
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如果宏参数中包含,号,可以将参数用{}包围起来。%macro2015-04-07 11:53:13922
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:191071
0
-
原创 nasm中的表达式
nasm表达式支持2个特殊的记号 $和$$;前者标识其所在源码行的开始处地址,所以你可以这样写死循环:jmp $而后者标识当前段开始处的地址,你可以通过:$-$$找出当前代码在段内的偏移。 nasm提供以下运算符: | ^ & << >> + - * / //(带符号除) % %%(带符号模) 因为%符号也被宏预处理器使用,所以必须保证带符号和无符号的模操作符都必须跟有空格。- +(一元+和2015-04-07 10:07:38955
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 <_sta2015-04-07 09:28:042464
0
-
原创 Mac OS X汇编语言常识
首先OS X的syscall表位置在/usr/include/sys/syscall.h2015-04-06 21:16:235594
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:403662
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:221631
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,02015-04-13 18:08:013809
7
-
原创 linux下64位汇编的系统调用(5)
看到这里大家都基本知道了如何进行linux下的汇编系统调用;不过有些童鞋可能会问:那些C库中函数里为我们解决的额外汇编代码你是怎么知道的? 好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑… 比如举个例子,那上一篇里的mmap C库函数来说,首先写一个C代码:#include <stdlib.h>#include <stdio.h>#include <stdbool.h>#inclu2015-04-12 10:33:371672
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:472449
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:032533
1
-
原创 linux下64位汇编的系统调用(2)
知道了syscall调用号之后还不算完,还要搞清楚2件事:1 每种调用号需要传递哪些参数; 2 调用如何传递参数以及结果如何返回;第一个问题的答案是: 在linux系统中某个程序执行时进行的系统调用可以通过strace命令来查看,solaris中对应的命令为dtrace,而mac os x中可以通过类似的dtruss命令来查看。当进程已经处于 D 状态(uninterruptible sleep2015-04-11 20:19:304271
0
-
原创 linux下64位汇编的系统调用(1)
现在基本上系统都是64位了,而64位系统下的汇编和32位有了较大的变化,无论是系统调用的接口还是C标准库的接口都和32位汇编有所不同;下面简单谈一下在64位linux下如何利用汇编直接调用系统调用。需要准备的有:1.一台linux机器:我的系统是ubuntu 14.10 x64版; 2.还要一个汇编器;我没有使用gas,而是使用了跨平台的nasm; 3.一个调试器;这里选择的不多,要不就是gdb2015-04-11 19:05:473925
0
-
原创 我是如何从汇编语言脑残粉转变的
我最早接触汇编语言可以追溯到裕兴学习机那一阵。当时裕兴在推出了浮点BASIC和游戏BASIC之后还不过瘾,觉得还能更深一步挖掘机器的潜力,结果推出了6502汇编语言的磁碟。我当时第一时间买了,磁碟还附赠一本简单的编程手册(十几页吧,蛮薄的)。可说出来不怕各位童鞋笑话,我基本上是一句指令都没写出来的干活啊!:( 在我人生正式课堂晓(xiao一声)习的最后1年里,我曾从图书馆借阅了《IBM汇2014-08-31 11:03:2211703
44
-
原创 MASM中3中文本宏的使用与区别
=2014-09-30 17:49:041102
0
-
原创 linux下32位汇编调用规则
传递给系统调用的参数必须安装参数顺序一次放到寄存器中,当系统调用完成后,返回值放在eax中:当系统调用参数<=5个时: eax中存放系统调用的功能号,传递给系统调用的参数顺序依次放到寄存器:ebx,ecx,edx,esi,edi中当系统调用参数>5个时: eax中存放系统调用的功能号,全部参数应依次放在一块连续的内存区域中,同时在寄存器ebx中保存指向该内存区域的指针(内存块的首地址);li2015-05-25 09:55:231431
0
-
原创 mac os X 下用nasm大杂烩
section .data msg db 'This is a test', 10, 0 ; something stupid here ft db 'addr is %x',10,0section .text global _main extern _printf extern _exit_main: push rbp2013-05-08 17:50:315953
1
-
原创 [原创]如何侵入WinNT系统的对话管理器进程(smss.exe)
如何侵入WinNT系统的对话管理器进程(smss.exe) 我们知道在NT中smss.exe是唯一一个被内核信任的ring3级进程,其中只包括一个原生态dll---ntdll.dll。我用常用的hook和远线程的方式都无法侵入其"领空",如果哪位朋友有在ring3级入侵smss的方法请不吝赐教。 我的方法是在ring0切入其进程,然后调用未公开的2007-09-15 22:14:002319
3
-
原创 Windows 核心编程研究系列之二:读取指定物理内存地址中的内容
[原创/讨论]Windows核心编程研究系列之二:读取指定物理内存地址中的内容关键字:windows内核,物理内存 大家知道在windows NT中,如果已知虚拟地址可以通过进程页表或者内核提供的MmGetPhysicalAddress来取得对应的物理地址。现在我们反过来看一下,如果已知一个物理内存地 址 (假设地址有效),如何取得物理地2006-12-19 21:45:008040
4
-
原创 masm下几种常见函数调用方式
masm没有fastcall调用方式,其特点为:1 第一个参数放入eax,di'er'g2014-07-03 19:43:462125
0