![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ASM/Crack
Tony.S
Work hard, play hard,
展开
-
ASM_2
程序运行入口:CS:Code segment(基地址)IP:指令指针寄存器(偏移地址)CS:IP实际地址 = CS * 16 + IPDebug命令的使用:R:寄存器查看/修改 D:查看内存(默认显示CS:IP地址)U:将机器码转换为汇编指令T:跟踪(trace)代码A:编写代码-amov ax,1234mov bx,3456-u cs原创 2009-11-25 23:46:00 · 461 阅读 · 0 评论 -
VC和VB嵌入汇编的方法
VC的嵌入ASM的方法#define CallBaseAddr 0x962AC4#define SkillAttackAddr 0x457680void maindlg::SkillAttack(long SkillID){ __asm { pushad mov eax,DWORD ptr ds:[CallBaseAddr]原创 2009-12-10 21:52:00 · 922 阅读 · 0 评论 -
汇编寻址方式总结
命令:mov dowrd ptr ds:[esi],edi解释:OD自动反编译了 ds ss自动加入了,不需要手动 [DS*0x10 + esi]1====================立即数寻址mov ax,12342 ===================寄存器寻址 (所需要的操作数 存放在一个寄存器里)mov ax,bxmov bx,dxtest a原创 2009-12-14 17:37:00 · 685 阅读 · 0 评论 -
汇编指令大全
1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.转载 2009-12-08 14:10:00 · 1061 阅读 · 0 评论 -
常见脱壳方法
一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种UPX ASPCAK TELOCK PELITE NSPACK ...ARMADILLO ASPROTECT ACPROTECT EPE SVKP ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多!二、常见脱壳方法转载 2010-01-31 15:40:00 · 1312 阅读 · 0 评论 -
位运算总结
功能 ¦ 示例 ¦ 位运算----------------------+---------------------------+--------------------去掉最后一位 ¦ (101101->10110) ¦ x >> 1在最后加一个0 ¦ (101101->101转载 2009-12-07 17:37:00 · 532 阅读 · 0 评论 -
ASM_6自定义中断[概念]
中断向量表的位置: 0000:0000 - 0000:03FE 自定义中断: mov ds:[0], mov ds:[2],存放中段程序的程序段: 0000:0200 - 0000:0300根据以上中断向量表、自定义中断、中断程序段的使用例子:第一步:先修改中断向量表0号表项的修改为 自己编写的程序的入口第一步v1(会编译错误): mov ax,原创 2009-11-29 11:00:00 · 549 阅读 · 0 评论 -
ASM_6自定义中断[代码]
ASSUME CS:CODES,DS:DATAS,SS:STACKSDATAS SEGMENTDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTSTART: MOV AX,DATAS MOV DS,AX mov ax,0 ;0号中断向量表的位置 0000:0000 mo原创 2009-11-29 10:59:00 · 644 阅读 · 0 评论 -
ASM_4HelloWorld完整代码
DATAS SEGMENT msg db hello WorldDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS ;数据段初始 MOV DS,AX ;数据段初始原创 2009-11-26 15:21:00 · 713 阅读 · 0 评论 -
ASM_5中断
CPU如何找到中断: 通过中断向量表找 中断向量在内存中保存,存放着256个中断源所对应的中断处理程序入口 保存在0000:0000到0000:03FE的地址里共256位 每个表项占2个字,即4个字节 32位图示: 0号中断 32位 1号中断 32位 2号中断 32位 3号中断 32位------原创 2009-11-26 16:29:00 · 648 阅读 · 0 评论 -
ASM_1
主板上的CPU 周围有很多线通向内存 通向PCI 通向南桥 叫总线CPU->内存 的线叫地址总线,通过地址总线找到程序在内存中的具体位置数据总线 把内存中的内容传送给CPU控制总线 CPU控制外维设备(硬盘、光驱等)每根总线可以传送0和1 (高低电平)8086CPU对内存的寻址最大范围是2^20次 = 1MB每次传送10位CPU通过地址总线传送地址给内存控制器原创 2009-11-25 23:06:00 · 413 阅读 · 0 评论 -
CS IP
CS:IP0000:0000数据段:指令指针 -E 0000:0000 直接修改内存!-e 0000:00000000:0000 68. 10. A7. 00. BB. 13. A8.原创 2009-11-25 17:41:00 · 590 阅读 · 0 评论 -
ASM_3堆栈
堆栈栈:只有一个出口栈顶:最后一个数据的存放位置SS:SP 来感知堆栈,并且 SS:SP任何时候都指向栈顶SS*16 + SP 指向的内容就是栈的空间SS存放栈的基地址SP存放栈的偏移地址入栈:将AX中的数据存入SS:SP指向的内存,并且SS:SP指向新的栈顶新栈顶的位置计算:SP-2入栈地址是从高字节到低字节排列原始状态:原创 2009-11-26 10:56:00 · 663 阅读 · 0 评论 -
寄存器缩写Ax BX CD DX ...
AH&AL=AX(accumulator):累加寄存器BH&BL=BX(base):基址寄存器CH&CL=CX(count):计数寄存器DH&DL=DX(data):数据寄存器SP(Stack Pointer):堆栈指针寄存器BP(Base Pointer):基址指针寄存器SI(Source Index):源变址寄存器DI(Destination Index):目的变址转载 2009-11-25 15:34:00 · 2763 阅读 · 1 评论 -
汇编总结 标志位/指令
转载http://www.figoyao.com/blog/2009/12/09/182 一、标志位操作指令1、进位CF标志操作指令清零标志位CLC:CF置位标志位STC:CF标志位取反CMC:CF2、方向位DF操作指令清零方向位CLD:DF置位方向位STD:DF3、中断允许位IF操作指令清零CLI:IF置位STI:I转载 2009-12-13 17:35:00 · 2819 阅读 · 0 评论