tinytracer

  • 实践
    • CTF
    • 项目实践
  • 技术
    • C++
    • 逆向与汇编
    • 区块链安全
  • 探索
    • OWASP汉化
    • SQL
    • Kali
技术
逆向与汇编

IDA基本介绍

简介 交互式反汇编器专业版(Interactive Disassembler Professional),简称为IDA,由Hex-Rays公司推广和销售。就其本质而言,IDA是一种递归下降反汇编器,但效率相比普通的反汇编器要高得多,原因如下 IDA应用大量启发式代码来识别递归下降过程中遗漏的代码。IDA在区分数据与代码的同时还会设法确定数据的类型。IDA的目标之一是呈现尽可能接近源代码的代码。 IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。 IDA的反盗版策略 水印 每一…

2018年4月26日 0条评论 1911点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

逆向与反汇编工具

分类工具 通常,在初次遇到一个不熟悉的文件时,不要通过文件的扩展名来确定文件的类型。可以通过以下几个工具来判断文件类型 file file命令是一个标准的实用工具,大多数*NIX风格的操作系统和Windows下的Cygwin或MinGw工具都带有该工具。 file通过两种方式来判断文件类型 通过检查文件中的某些特定字段来确认文件类型,如#!bin/bash识别为脚本文件,<html>识别为HTML文档 通过判断文件的结构是否符合某种已知的文件格式。多数情况下,它会搜索某些文件类型特有的标签值。 file…

2018年4月25日 0条评论 1767点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

反汇编基础

反汇编概念 在传统软件开发的过程中,程序员使用编译器、汇编器和链接器其中一个或几个来创建可执行程序。为了回溯编程编程过程,以汇编语言甚至是机器语言进行输入,其输出结果为高级语言的过程称为反汇编。反汇编通常需要使用反汇编工具,并且反汇编的过程是困难的,结果并不是百分百正确。原因如下 - 编译过程会造成损失。机器语言中没有高级语言所使用的变量或函数名,变量信息只有通过数据的用途(而不是显式的类型声明)来确定。比如,看到一个32位的数据被传送(如mov eax,[ebp+12]),需要进行一番分析才能确定这个32位数据表…

2018年4月24日 0条评论 1975点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

C++逆向- 数据存储基础

基本数据类型的表现形式和操作指令 整型 无符号整数 在内存中,无符号整数的所有位都用来表示数值。 当无符号整型不足32位时,用0填充剩余高位,直到占满变量类型的空间。 内存存放数据的方式有两种,小尾存放和大尾存放。小尾存放是以字节为单位,按照数据类型的长度,高数据位对应高地址,低数据位对应低地址。如0x12345678的小尾存放方式为78 65 43 21 ,高尾为 12 34 56 78 有符号整数 有符号整数用来表示正负的是最高位(符号位)。最高位为0表示正数,1为负数 有符号整数的取值范围比无符号整数少1位。…

2017年9月26日 0条评论 1249点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-函数

递归 -递归函数调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码包含终止调用链的内容 { statement 1; if(a>0) recurs(a-1); statement 2; } 解析:只要if语句为true,每个recurs调用将执行statement 1,然后再调用recurs,而不会执行statement 2。当if语句为false时,当前调用将执行statement 2,然后结束并返回之前的函数,执行statement 2,以此类推 函数头 函数头由3部分组成,如: int m…

2017年8月29日 0条评论 1594点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-存储的持续性与作用域

自动存储 在默认情况下,在函数中声明的函数参数和变量存储类型为auto,作用域为局部。 如果在代码块中定义了变量,则该变量的存在时间和作用域被为代码块 在函数体内部代码块中声明与代码块外部名称相同变量时,程序执行到代码块内部时将该变量解释为局部代码块变量,新的定义隐藏了旧的定义。程序离开代码块时,原来的定义重新可见 全局声明的auto变量具有外部链接性,两个源文件中不能声明同名称的全局auto变量 使用extern关键字引用同名外部变量 //1.cpp int t = 5; int main() { ... } /…

2017年8月29日 0条评论 1241点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-类

类与对象 类的定义 类支持用户自定义数据类型,使用关键字class,类体用{}界定,以;结束 class a { public: int b; a(int b, char c, long d); protected: char c; private: long d; } 类的成员包括函数成员和数据成员。定义类的目的是对某种类型的实体进行处理 在类的定义中,实体的属性是数据形式,即类的数据成员;实体的行为、功能或者对类中的数据成员进行操作称作方法,被表示为函数 类的数据成员在定义类体中,形式为:数据类型 成员名; 类…

2017年8月29日 0条评论 1517点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-I/O

流和缓冲区概念 C++把输入和谁出看作字节流。输入时,程序从输入流中抽取字节;输出时程序将字节插入输出流中。字节为构成数值或字符的二进制表示。 C++处理字节流的步骤为 将输入流、输出流与标准输入/输出关联 在内存中创建缓冲区,从输入流中读取字节放入内存中 缓冲区满或检测到特定输入(如回车)刷新缓冲区,同时将内存中的字节流通过输出流传入文件 处理字节流的常用类 ios_base:表示流的一般特征,如是否可读取、是二进制流还是文本等 ios:继承自ios_base,包括一个指向streambuf对象的指针 ostre…

2017年8月29日 0条评论 1513点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-杂项

RTTI(运行阶段类型识别) RTTI可在程序运行过程中动态地识别基类指针/引用所指向的类对象(派生类or基类) 全局示例代码: class a{...}; a* biu class b : public a{......} b* test class c : public b{......} c RTTI运算符: dynamic_cast: 使用示例: type * pm = dynamic_cast<type*> (item) 如 b* test; c*pm = dynamic_cast<c*…

2017年8月29日 0条评论 1354点热度 0人点赞 Chernobyl 阅读全文
123

COPYRIGHT © 2024 tinytracer. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang