|
[求助]一个Switch的不解
当 al = 1 时,使用 [ecx+3370], [ecx+3374] 当 al = 2 时,使用 [ecx+3360], [ecx+3364] ------------------------------------------------ ecx 是基地址,那可以推断假设: al = 3 时,会不会使用 [ecx+3350], [ecx+3354] ?? ... ... al = 8 时,会不会使用 [ecx+3300], [ecx+3304] ?? -------------------- 那么这个应该是一个很大的结构其中一部分是数组,或者整个结构都是数组 |
|
jmp 0008:89C217B0
jmp 0008:89C217B0 ------------------------------ 如果地址 89c217b0 里的数据是不可识别的乱码,那么 0008 应该是一个 gate 的 selector |
|
[求助]问个汇编问题!
很简单,逆成的逻辑是这样: for (int i = 0; i < 12; i++) |
|
[求助]ring0返回到ring3 Cs:eip的无效问题
应用层尽管使用 int 调用就行了,不用管它怎样返回 |
|
|
|
[求助]ring0返回到ring3 Cs:eip的无效问题
你的dd esp 不是显示: b21a7dc8 0012ff80 0040102a 0000001b 00000212 后面的 0040102a 才是 eip 值 |
|
[求助]ring0返回到ring3 Cs:eip的无效问题
是使用 iret 没错 调用中断是会依次压入 eflags,cs 和 eip,返回时依次弹出 eip,cs 和 eflags 你查看一下,执行 iret 指令时的 stack 这些要素是否正确,是否有效 |
|
[分享]第二波:memcpy() 函数逆向与分析
赞一下楼上,看贴很认真,多谢指出: 改为: for (int i = 0; i < count / 8; i++) *(long long *)dest++ = *(long long *)source++; for (int i = 0; i < count %8; i++) *dest++ = *source++; 或者: for (int i = count / 8; i; i--) *(long long *)dest++ = *(long long *)source++; for (int i = count % 8; i; i--) *dest++ = *source++; |
|
[分享]第二波:memcpy() 函数逆向与分析
memcpy() 大概分析完,后面有些马虎了,早早了事,将就将就 |
|
|
|
|
|
|
|
|
|
[分享]简单的函数逆向(还原)
现在,我们可以知道,memcpy_s() 函数是如何保证它的安全性: 当目标 buffer 大小不足放下要复制的数量时,会失败返回失败状态值。避免 override 缓冲区 |
|
|
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值