自制反汇编逆向分析工具 迭代第六版本 (五)
2016-05-20 16:41
387 查看
本工具从最初版的跳转分布图只为了更直观地分析反汇编代码的分支结构,第三版开始对直观图进行逆向分支代码的输出,第四版对分支输出策略的一些探索,第五版结合之前的探索进行改进。第六版在现在功能的基础上进行增强,利用第六版(一)的基本功能-直译,第六版(二)对条件分支增加条件判断翻译,以及改进在函数调用处附带备选参数参考。
第六版(三)将(一)和(二)组合在一起进行逆向代码输出。
第六版(四),在(三)的基础上增加对原子操作指令的逆向以及c++函数的逆向。
本篇是(五),对待c风格的函数符号调用的翻译,通过导入c风格符号的函数原型来参考分析。
上一篇在介绍对待 c++风格的函数符号调用的情况,提到了c风格的函数符号没有太多的原型信息可供参考,但是它唯一不被重载,参数约定使用标准的约定,所以用古老(老土)的办法就好了。就是导入c风格符号的函数原型(主要是符号名和参数序列)。
CA::Transaction::run_deferred_visibility_layer_calls
第六版(三)将(一)和(二)组合在一起进行逆向代码输出。
第六版(四),在(三)的基础上增加对原子操作指令的逆向以及c++函数的逆向。
本篇是(五),对待c风格的函数符号调用的翻译,通过导入c风格符号的函数原型来参考分析。
上一篇在介绍对待 c++风格的函数符号调用的情况,提到了c风格的函数符号没有太多的原型信息可供参考,但是它唯一不被重载,参数约定使用标准的约定,所以用古老(老土)的办法就好了。就是导入c风格符号的函数原型(主要是符号名和参数序列)。
CA::Transaction::run_deferred_visibility_layer_calls { // 0 pushq %rbp // 1 rbp = rsp; // 4 pushq %r15 // 6 pushq %r14 // 8 pushq %rbx // 9 pushq %rax // 10 r14 = rdi; // 13 rbx = r14->_78; // 17 testq %rbx, %rbx // 20 if (!) { // 17 (0 == rbx) _b22: // from 81 // 22 r15 = rbx->_0; // 25 testq %r15, %r15 // 28 if (!) { // 25 (0 == r15) // 30 rdi = r15; // 33 call ((CA::Layer*)r15)->call_did_become_visible(); // 38 eax = 0xffffffff; // 43 lock // 44 OSAtomicAdd32(eax, (volatile int32_t*)&r15->_0); // 48 cmpl $0x1, %eax // 51 if (!) { // 48 (eax != 0x1) // 53 rdi = r15; // 56 call ((CA::Layer*)r15)->~Layer(); // 61 edi = 0xb; // 66 rsi = r15; // 69 call x_mem_dealloc_bucket(0xb, (void*)r15); } // 74 } // 74 // 74 rbx = rbx->_8; // 78 testq %rbx, %rbx // 81 if () // 78 (0 != rbx) goto _b22; // 83 rdi = r14->_78; // 87 call x_list_free((x_list*)r14->_78); // 92 r14->_78 = 0x0; } // 100 // 100 rsp = rsp + 0x8; // 104 popq %rbx // 105 popq %r14 // 107 popq %r15 // 109 popq %rbp // 110 ret return; // 111 nop }
CA::Transaction::run_deferred_visibility_layer_calls
相关文章推荐
- Java 类和对象12
- java 面向对象练习题11
- Javascript(JS)对Cookie的读取、删除、写入操作帮助方法
- 九度oj 1482:玛雅人的密码
- 杂记-5.20-关于大数据的一点构想
- 13.进程间通信---网络通信(TCP协议和UDP协议的比较)
- c#——窗体实验-最初版
- 前端开发者必备的20个文档和在线工具
- Django 学习小组:博客开发实战第一周教程 —— 编写博客的 Model 与首页面
- html5(语法规范)
- Android:从入门到改行
- jQuery实战学习笔记(三)--事件处理
- pythoneer 的三大神器—fabric
- [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
- PAT (Advanced Level) 1032. Sharing (25)
- 寻找水王
- MyBatis1:MyBatis入门
- contiki bsp
- Mac下安装配置Tomcat
- openfire系列一---源码导入