|
[原创] 一篇文章走进Mac逆向的世界
不错,参考一下 |
|
把exe逆向还原为汇编源码?
不是很难,我试过将一个 dll 整个导出汇编进行编译成功。 导出汇编代码后,直接编译多半会出错。需要修改一些东西 两个大问题: 一. ida 导出的汇编代码,不符合 masm 或者 nasm 之类的语法。当然这要修改正确的语法 这个问题好办:一般都是写工具进行自动转换,达到语法正确。 二. 编译或者链接出错的问题,这个问题有点刺手 主要的原因是: (1) c/c++ 源码编译时,编译器会自动生成插入一些额外的东西,例如:cookies检查之类的,栈空间分配前的检查等等... 你导出汇编码,可能需要修改或处理一下.... (2) 有些 c++ 的一些函数名,你无法接链,例如:关于异常之类的函数 (3) 编译器的版本问题, 例如:源代码是在 vc6.0 下编译的,你拿到 vs2008 编译,可能会出问题。找到不对应的函数或者库 能不能成功,就看你怎么修改了。 |
|
|
|
|
|
[原创]iOS安全些许经验和学习笔记
不错,mark |
|
|
|
如何设置ida的汇编显示格式
怎样 delete 再 create, 能否详细些 |
|
如何设置ida的汇编显示格式
已经打开过 bin, 有 *.idb 的情况下呢? |
|
关于ebp和esp的关系
只能说 lz 太嫩了,自己学不精就不要喷: (1) ebp 的默认段也是 SS,这方面和 esp 一样 在处理栈变量时,它们是分工合作的:esp 负责开辟空间,ebp 负责保存上一级的栈桢: push ebp mov ebp, esp ; 保存调用链中的上一级函数的栈桢 sub esp, 0xc0 ; 分配本地栈变量空间 ... ... mov [ebp-4], ecx ; 使用本地栈空间 ... ... mov esp, ebp ; 恢复上一级栈桢 pop ebp ret --------------------------- 在这里, ebp 默认是使用 SS 段的,这和 esp 是一样的!所以 ebp 才被叫做 stack-frame base pointer (栈桢基指针),目的和初衷是辅助 esp 处理栈变量的! (2) ebp 在处理 local 变量时,优势以及作用, esp 是不能代替的, 例如,如果编译器需要将 栈对齐在 16 字节后再分配空间,那么,编译会大概会类似这样做: push ebp mov ebp, esp and esp, 0xfffffff0 ;; 注意,这需要对齐在 16 字节 sub esp, 0xc0 ;; 注意,然后再分配空间 ... ... mov esp, ebp ;; 最后返回前,编译器并不需要记住 esp 对齐前的值 pop ebp ret ----------------------- 那么,如果只使用 esp 处理栈变量的话,如何方便优雅地做到 "栈对齐" 这一要求呢? (3) 另外,连这么简单的英文都不懂,干脆别学计算机!还说“鸟文”,英文是世界通行的语言好不好! |
|
|
|
[求助]在for里面定义的变量
这是 vs 的反汇编器里的显示形式, 在 mov dword ptr [i], 0 这条语句里,i 可能代表着 global 或者 local 变量 在这个例子里,i 代表着 [ebp-0x80] 也就是 local 变量 C7 45 80 00 00 00 00 ===> 译为: mov dword ptr [ebp-0x80], 0 |
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值