
逆向/汇编语言相关
sysprogram
这个作者很懒,什么都没留下…
展开
-
32位汇编寄存器
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间转载 2012-05-23 16:17:23 · 5332 阅读 · 1 评论 -
16汇编 and和or实现大小写转换
and和or实现大小写转换assume cs:code, ds:datadata segment db 'test' db 'UPDATA'data endscode segment start: mov ax,data mov ds,ax mov bx,0 mov cx,4 s: ;将test转换成大写TEST mo原创 2016-08-31 10:21:00 · 2240 阅读 · 0 评论 -
学习16位DOS汇编笔记
ax //是16位的寄存器,最大可以存65535ah,al //是8位的寄存器,最大可以存255cs:ip //指向程序下一条执行的指令ds //数据段寄存器ss //栈段寄存器sp //栈顶指针物理地址=段地址*16(十进制)+偏移地址物理地址=段地址*10(十六进制)+偏移地址物理地址20030 段地址2000 偏原创 2016-08-29 21:01:14 · 1458 阅读 · 0 评论 -
16位汇编 使用word ptr和byte ptr的寻址方式
word ptr和byte ptr的寻址方式, 修改data段的数值assume cs:code, ds:datadata segment db 60h dup(0) db 'DEC' db 'Ken Oslen' dw 137h dw 40h db 'PDP'data endscode segment start: mov ax,data mov ds,ax原创 2016-08-31 13:48:03 · 6324 阅读 · 0 评论 -
16位汇编 写入显存B800:0000 输出字符串
B8000H-BFFFFH的内存空间是显存地址, 32K大小, 向这个地址写入数据就可以打印到屏幕上了。assume cs:code, ds:datadata segment db 'Hello,test'data endscode segment start: mov ax,0b800h mov ds,ax ;显存的数据段 mov si,data mov原创 2016-08-31 21:15:23 · 6201 阅读 · 0 评论 -
16位汇编 cmp jne实现判断和循环
je ZF=0则跳转 jne ZF=1则跳转assume cs:code, ds:data data segment db 'Hello,test' data ends code segment start: mov ax,10h mov bx,01h s: inc bx原创 2016-09-02 22:11:47 · 5403 阅读 · 1 评论 -
16位汇编 call调用函数 通过栈来传递参数
计算N的3次方,N做为参数放在栈上assume cs:code, ds:data data segment dw 0data ends code segment start: mov ax,data mov ds,ax mov word ptr ds:[0],2 push w原创 2016-09-02 23:20:18 · 1718 阅读 · 0 评论 -
16位汇编 Hook int 0实例
div除法溢出之后, 会调用中断0, 显示Divide overflow, 我们修改中断向量表里对应的0号中断的处理地址, 将我们的代码执行起来, 达到hook的目的assume cs:codecode segmentstart: ;写入新的int 0地址 mov ax,0 mov es,ax mov word ptr es:[0*4],0200h原创 2016-09-03 13:04:21 · 1044 阅读 · 0 评论 -
16位汇编 int 10h和int 21h 显示字符串实例
int 10h 的9号功能是显示字符串assume cs:codecode segment start: mov ah,2 ;置光标 mov bh,0 ;第0页 mov dh,1 ;dh中放行号 mov dl,1 ;dl中放列号 int 10h mov ah,9 ;在光标位置显示字符串 mov al,'a' ;字符 mov bl,0ch ;黑底红字 mov b原创 2016-09-03 13:44:48 · 7296 阅读 · 1 评论 -
WinDbg实战调试命令笔记
1.字符串查看da esp-20 //显示ansi字符串du esp-20 //显示ansi字符串db esp-20dd esp-20 2.修改数据eb ebp-20 61 61 61 61 61 ea 0012ff4c "bbbbb"eu 0012ff4c "ab"r @eax=1 //将eax寄存器修改为13.断点原创 2011-08-01 17:29:13 · 1247 阅读 · 0 评论 -
iOS Hacker Xcode玩转arm64汇编基础
已经熟悉了x86汇编,所以其他的理论就不多记了,主要是记录以下这些。iphon5s以上都是arm64的设备armv6 设备:iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Toucharmv7 设备:iPhone3GS, iPhone4, iPhone4S iPad, iPad2, iPad3(The New iPad), i原创 2017-05-11 19:38:03 · 3255 阅读 · 0 评论 -
iOS Hacker Xcode使用和内联汇编
1.在C/C++/Objective C调用汇编函数在iOS工程里新建Assemble文件,编写代码.text.align 4.globl _funcAdd_arm_funcAdd_arm: add w0,w0,w1 add w0,w0,w2 add w0,w0,w3 add w0,w0,w4 add w0,w0,w原创 2017-05-11 20:17:52 · 2268 阅读 · 0 评论 -
iOS Hacker dumpdecrypted脱壳
1.源码编译dumpdecryptedgit clone git://github.com/stefanesser/dumpdecryptedcd dumpdecryptedmake编译成功之后在当前目录找到dumpdecrypted.dylib2. 找出进程iPhone:~ root# ps -e | grep Application 3. 使用cycript注入原创 2017-06-06 21:07:32 · 2140 阅读 · 0 评论 -
OllyDbg捕捉MFC程序按钮事件
1. 首先下消息断点WM_LBUTTONUP, 或者使用bp TranslateMessage MSG==WM_LBUTTONUP2.点按钮会断在USER32模块中, ALT+M选择代码段F2下断点,再F9运行, 会看到执行到0040160A .- FF25 E0204000 jmp dword ptr [; MFC42.#6374_CWnd::WindowP原创 2016-08-19 19:04:55 · 4462 阅读 · 0 评论 -
16位汇编 数据段 栈段 代码段
使用数据段,栈段,代码段 实现置换功能0123 0456 0789 0abc 0def 0fed 0cba 09870987 0cba 0fed 0def 0abc 0789 0456 0123assume cs:code, ds:data, ss:stackdata segment ;数据段 dw 0123h,0456h,0789h,0a原创 2016-08-30 11:37:24 · 1964 阅读 · 0 评论 -
中断表
中断INT 21H :1、字符功能调用类(Character-Oriented Function)01H、07H和08H — 从标准输入设备输入字符 02H — 字符输出 03H — 辅助设备的输入 04H — 辅助设备的输出 05H — 打印输出 06H — 控制台输入/输出 09H — 显示字符串 0AH — 键盘缓冲输入 0BH — 检测输入状态转载 2012-07-09 11:09:00 · 1203 阅读 · 0 评论 -
神奇的Debug
在cmd命令行下输入debug:输入“D FE00:0”,回车后可以看到结果,这个就是主板BIOS的厂商信息。接着再输入“D FFFF:5 L 8”,回车后,主板的BIOS版本日期也出来输入“D C000:0090”命令并回车,这时右侧部分可以看到系统中显卡的显存、生产厂商等信息。原创 2012-07-09 11:11:35 · 823 阅读 · 0 评论 -
破解BIOS密码
忘记BIOS密码,可以使用Debug的o命令来破解输入以下命令 o 70 19 o 71 15 q 重启电脑,系统提示CMOS校验和出错,并要求重新进入BIOS设置CMOS。 70和71是CMOS的两个端口,我们可以在它们的后面随意写入一些错误数据(如19、16、17等),就会清空CMOS里所有设置,如果不见效不妨多用几个数据试试。 如原创 2012-07-09 11:15:09 · 3336 阅读 · 0 评论 -
汇编ing...
记性不好,mark一下源程序:DATAS SEGMENT STRING DB 'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DX,STRING原创 2012-07-09 11:07:23 · 929 阅读 · 0 评论 -
逆向与汇编的一些笔记
寄存器EAX:累加寄存器EBX:基址寄存器ECX:计数寄存器EDX:数据寄存器ESI:来源寄存器EDI:目标寄存器EBP:基址指针寄存器ESP:堆栈指针寄存器EIP:指令指针寄存器 条件跳转指令ja CF=0 and ZF=0jab CF=0jb CF=1jbe CF=1 of ZF =1jcxz CX=0je原创 2013-12-04 22:29:59 · 1438 阅读 · 0 评论 -
OllyDbg的一些快捷键
F2 //下断点F3 //加载一个可执行程序F4 //程序执行到光标处F5 //缩小,还原当前窗口F7 //单步步入F8 //单步步过F9 //直接运行程序,遇到断点处,程序会暂停Ctrl+F2 重新运行程序到起始处,用于重新调试程序Ctrl+F9 //执行到函数的返回处,用于跳出函数Alt+F9 //执行到用户代码处,用于快速跳出系统函数Ctr原创 2013-12-01 18:59:45 · 2480 阅读 · 0 评论 -
exe的dll加载过程
转载 2013-12-06 23:59:43 · 1594 阅读 · 0 评论 -
VMware+Win7+windbg 双机调试
一. vmware 设置1. 添加串口2.选择输出到命名管道3. 命名管道名称 \\.\pipe\com_1, 该端是服务器, 另一端是虚拟机二. 系统设置bcdedit /copy {current} /d "Windows 7 copy"bcdedit /debug ONbcdedit /bootdebug ONbcdedit /dbgsetting原创 2016-06-16 17:13:09 · 3134 阅读 · 0 评论 -
16位汇编 寄存器的操作
寄存器的操作assume cs:codesgcodesg segment mov ax,0123H mov bx,0456H add ax,bx add ax,ax mov ax,4c00h ;程序返回 int 21Hcodesg endsend可以在dos下运行.原创 2016-08-29 21:04:10 · 1036 阅读 · 0 评论 -
16位汇编 loop循环
loop循环,计算2的8次方assume cs:codesgcodesg segment mov ax,2 mov cx,7 s: add ax,ax loop s mov ax,4c00h int 21Hcodesg endsend原创 2016-08-29 21:06:11 · 1494 阅读 · 0 评论 -
16位汇编 在代码段中使用数据
在代码段中使用数据, 计算0123+0456+0789+0abc+0def+fed+cba+0987assume cs:codecode segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;定义数据, cs:0开始start: mov bx,0 mov ax,0 mov cx,8 s: add ax,原创 2016-08-29 21:09:12 · 988 阅读 · 0 评论 -
16位汇编 在代码段中使用栈
在代码段中使用栈, 置换0123 0456 0789 0abc 0def 0fed 0cba 09870987 0cba 0fed 0def 0abc 0789 0456 0123assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,098原创 2016-08-29 21:15:52 · 684 阅读 · 0 评论