tinytracer

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

基于Ring3的行为分析工具开发日志——进程通信

起因 趁还有印象赶紧动笔 程序行为分析器采用DLL注入的方式实现,类似于 hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPID)); pRemoteBuf=VirtualAllocEx(hProcess,NULL,dwBufSize,MEM_COMMIT,PAGE_READWRITE); WriteProcessMemory(hProcess,pRemoteBuf,szDLLName,dwBufSize,NULL); hMod=GetModuleHandle("ke…

2020年2月16日 0条评论 3746点热度 0人点赞 Chernobyl 阅读全文
项目实践

行为分析工具开发日志——序

前言 我们在分析一个程序的时候,通常的步骤是拖进PEid等工具查壳,看区段和引用,然后拖进OD等调试器脱壳,或者IDA等工具查看源码,来对程序有个大体上的了解。然而在分析病毒样本的时候,脱壳要费一番功夫,反调试又是一道坎。接着在关键API或者字符串下断,查看运行情况,还得担心可能的暗桩或程序自带的钩子。往往一番功夫下来,连病毒是做什么的,怎么做的都不知道,绕进反调试或反混淆里面出不来。就算是定位到了关键API,参数的获取和处理也是一个难题,毕竟涉及到内存的分布、系统内部类或结构体的变量定义与解析的问题。 换一种思路…

2020年2月13日 0条评论 3665点热度 0人点赞 Chernobyl 阅读全文
项目实践

C++简单计算器

说明 去年做的小玩意...实现了一些简单计算的功能,大致思想是将输入的算式作为字符串处理,每个子项为double类型。加入大数计算估计要推倒重做了233333.....欢迎讨论。 //calculator.h #include<iostream> #include<string> #include<vector> using namespace std; class num { private: double data; char g; friend void operator*…

2017年11月20日 0条评论 4150点热度 0人点赞 Chernobyl 阅读全文
逆向与汇编

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

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

2017年9月26日 0条评论 3363点热度 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条评论 4619点热度 0人点赞 Chernobyl 阅读全文
C++

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

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

2017年8月29日 0条评论 3441点热度 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条评论 4497点热度 0人点赞 Chernobyl 阅读全文
C++

C++学习-I/O

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

2017年8月29日 0条评论 4175点热度 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条评论 4150点热度 0人点赞 Chernobyl 阅读全文

COPYRIGHT © 2021 tinytracer.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang