随笔分类 - 逆向知识
摘要:在IDA7.0中的定义文件拷贝的. 如果想使用,直接去IDA的 plugins 插件目录下.包含它的 defs.h"" 如下:
阅读全文
摘要:C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异常处理,请点击博客链接熟悉一下,当然如果不想知道,也可以直接往下看.因为异常处理所以做了封装,但是不
阅读全文
摘要:C++反汇编第五讲,认识多重继承,菱形继承的内存结构,以及反汇编中的表现形式. 目录: 1.多重继承在内存中的表现形式 多重继承在汇编中的表现形式 2.菱形继承 普通的菱形继承 虚继承 汇编中的表现形式 一丶多重继承在内存中的表现形式 高级代码: 通过main函数我们得知,我们生成了一个孩子类的对象
阅读全文
摘要:C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式 备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提. 2.子类继承父类 2.1 子类中有虚函数,父类中有虚函数 : 都有的情况下 2.2 子类中没有虚函数,父类中有虚函数 : 子类
阅读全文
摘要:C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址 讲解之前,了解下什么是虚函数,什么是虚表指针,了解下语法,(也算复习了) 开发知识为了不码字了,找了一篇介绍比较好的,这里我扣过来了,当然也可以看原博客链接: http://blog.csdn.net/hackbuteer1/artic
阅读全文
摘要:C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲: 1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.) 1.1 探究本质,理解构造和析构的生成,以及调用方式(重要,如果不想知道,可以看总结.) 2.对象做函数参数的识别 3.返回值为对象的识别
阅读全文
摘要:C++反汇编第一讲,认识构造函数,析构函数,以及成员函数 以前说过在C系列下的汇编,怎么认识函数.那么现在是C++了,隐含有构造和析构函数 一丶认识构造函数 高级代码: class MyTest { public: MyTest(); ~MyTest(); public: DWORD m_dwTes
阅读全文
摘要:逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合 2.在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合
阅读全文
摘要:逆向知识十三讲,汇编中数组的表现形式,以及还原数组 讲解数组之前,要了解数组的特性 1.数据具有连续性 2.数据类型相同 比如: int Ary[3] = {0,1,2}; 我们可以看出,上面定义的数组,数据是连续的,其中每个数据类型大小都是int类型(类型也是一样的) 汇编中识别数组: 1.地址连
阅读全文
摘要:逆向知识第十二讲,识别全局变量,静态全局变量,局部静态变量,以及变量. 一丶认识全局的 (静态变量 全局变量) 高级代码: 我们的静态局部变量 g_Number 会通过一个函数进行赋值初始化 VC6.0调试查看. 我们发现通过栈回朔会调用4个函数 调用顺序: _cinit() _initterm()
阅读全文
摘要:逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值. 在反汇编中,我们常常的会看到各种的函数调用,或者通过逆向的手段,单独的使用这个函数,那么此时,我们就需要认识一下怎么识别函数了. 一丶识别__cdecl 函数(俗称C Call),函数参数,函数返回值 首先写一个C Call的函数 1.返回
阅读全文
摘要:逆向知识第十讲,循环在汇编中的表现形式,以及代码还原 一丶do While在汇编中的表现形式 1.1高级代码: 高级代码很简单,只是一个简单的求1~100的累加 1.2 Debug版本下的汇编表现形式 代码定式很简单 ADDR .....do While逻辑代码块 xxxx 条件 JXX Addr
阅读全文
只有注册用户登录后才能阅读该文。
摘要:逆向知识第八讲,if语句在汇编中表达的方式 一丶if else的最简单情况还原(无分支情况) 高级代码: 总共两种情况,我们看下Release中怎么优化的把(注意,优化方式选择O2,速度优先) 汇编代码: 可以看到我们熟悉的代码了.也就是昨天的三目运算. 总共三行汇编代码. 还原套路一样,还是 代入
阅读全文
摘要:恢复内容开始 逆向知识第七讲,三目运算符在汇编中的表现形式 一丶编译器优化方式 首先说一下编译器优化方式. 1.常量折叠 2.常量传播 3.复写传播 4.公共表达式 5.去掉不可达到分支 6.顺序代替分支 7.数学变化 8.代码外提 9.减少变量. 10 强度削弱. 优化方式解析 1.常量折叠 常量
阅读全文
摘要:逆向知识第六讲,取摸优化的几种方式 除法讲完之后,直接开始讲 % 运算符在汇编中表现形式 首先C的高级代码贴上来. 高级代码: 一丶无符号% 2的幂在汇编中的表现形式 汇编代码: 高级对应语句: 可以看出,当无符号%2的幂的时候,直接用and计算. 其值是 2^n - 1的值 比如我们的number
阅读全文
摘要:逆向课程第五讲逆向中的优化方式,除法原理,以及除法优化下 一丶除法的优化 1.有符号被除数 / 无符号除数的情况下 高级代码为: 汇编中优化的体现形式 相比于昨天,我们发现了的 无符号 / 常量多出了点东西 无符号/常量 如果无符号/常量,那么我们还原的时候 套用公式即可 am >> n a是被除数
阅读全文
摘要:逆向课程第四讲逆向中的优化方式,除法原理,以及除法优化上 除法原理,涉及到了数学公式,而且在汇编中的体现形式也有10几种 这里首先讲解前4中, 抱着问题学习 一丶为什么要熟悉除法的优化,以及除法原理 是这样的,在计算机中,除法运算对应的汇编指令分为 DIV(无符号除法指令) 以及 IDIV(有符号除
阅读全文
摘要:逆向课程第三讲逆向中的优化方式,以及加减乘 一丶为什么要熟悉优化方式 熟悉优化方式,可以在看高级代码的时候浮现出汇编代码,以及做逆向对抗的时候,了解汇编代码混淆 优化和混淆是相反的 优化: 指的是汇编代码越少越好,让程序更快的执行 混淆: 一条汇编代码变为多条汇编代码,影响逆向人员的破解能力,但是软
阅读全文
摘要:逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6.0 Debug版本 1.1 首先,新建一个VC debug版本的程序,然后F5运行,可以看到栈回溯窗
阅读全文