|
|
|
[求助]内存访问硬件断点 Dr7应该如何设置啊
x86/x64包括一组调试寄存器:DR0,DR1,DR2,DR3,DR6和DR7. 这些寄存器在32位模式下为32-bit, 64位模式下为64-bit. 其中DR0,DR1,DR2和DR3包含断点的线性地址, DR7包含的位解释如下: 假设dr0里是断点地址,则设dr7=0x30001 |
|
|
|
[求助]如何断到shellcode里
adobe reader版本不一样 地址不一样很正常 只要确认到了溢出点 溢出过程是一样的 从第一个返回地址被覆盖开始 程序的实际掌握权已经给了shellcode |
|
[求助]如何断到shellcode里
win7下测了下,这个poc是不行的,因为win7下主模块和dll的基址都是随机的,而shellcode里返回地址是硬编码的,所以win7下eip会指向一个无效地址 引发异常 |
|
[求助]如何断到shellcode里
找了个9.3.0 大致上跟了下 溢出点,就是memcpy这个函数 209D4572 57 push edi 在这个函数上下断,观察栈并按f9继续 当这个函数的dest拷贝目标地址为栈空间,并且块大小为0x130时就是要覆盖返回地址了 0012D6D0 0012D778 |dest = 0012D778 这时候把栈拨道12D778 然后锁定栈窗口 F8,可以看到返回地址被覆盖为BIB.dll里的一个地址 0012D778 080C0C00 CoolType.080C0C00 shellcode拿BIB.dll当做了跳板,复制代码的工作也交给了这个dll,f8一步一步跟 0700D731 8B45 DC mov eax, dword ptr [ebp-24] ;从栈中取出shellcode的地址 跳板1,从栈里取出shellcode要被实际安放的地址 070015BB 59 pop ecx 跳板3,从栈里弹出预先设计的代码,一次一个dword,同时这个跳板也负责维护栈平衡 0700154D 8908 mov dword ptr [eax], ecx 跳板2,将预先设计的代码复制到这个地址,每次一个dword 0700A722 83C0 04 add eax, 4 跳板4,调整eax值,继续复制 shellcode反复利用这四个个跳板成功的将一段压缩的代码复制到0x3aa0000(我这里的) 还有一些其他的跳板,多用于维护栈平衡 复制完成后,再利用跳板1将代码实际地址装入eax 然后使用下面这个最后的跳板 0700112F FFD0 call eax 此时eip已经指向复制完成的代码了 不过代码是压缩的 03A10000 5A pop edx 其中最后一个call就是解压缩的循环,从0x3a1001b可以看出实际指令块长度为0x3e0 解压完成后的代码是加密的,利用这个循环来解密 03C70619 83ED FC sub ebp, -4 这是解密后的代码 03AA0624 FC cld |
|
[求助]如何断到shellcode里
弹出msgbox之后 暂停程序看看 调用堆栈, 如果这个漏洞是栈溢出的话,最近一层的返回地址可能已经被破坏所以估计找不到调用memcpy的地方了 那就再往更上一层找 然后下断 一步一步跟 把poc和shellcode发上来吧 |
|
[求助]如何断到shellcode里
另外还有些简单的方法就是当弹出msgbox的时候 方法1. od先f12暂停程序,然后alt+f9,然后点确定,这样就断在了调用msgbox的下一条指令上 方法2. od alt+m打开内存窗口,然后找到主模块的text段,f2下断,点确定,也能断在调用msgbox的下一条指令上 两种方法的原理是一样的 |
|
[求助]如何断到shellcode里
bp会断在函数第一条指令上,除非调用者有意绕过头几条指令,那就肯定能断到 bpx会断在主模块对该函数的引用上,如果函数不在导入表中,而是动态获取的,bpx是断不到的 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值