0%

加密算法

单向散列算法

SHA算法

安全散列算法,包括SHA-1,SHA-256,SHA-384,SHA-512,分别产生160位、256位、384位、512位散列值

SHA-1算法

原始消息长度不能超过2^64
sha-1算法与md4算法原理相同,消息分组和填充方式和md5算法相同(到md5的第二步)

阅读全文 »

菜单功能限制

相关函数

要将软件菜单和窗口变得不可用,可用以下函数

  1. EnableMenultem()
    允许或进制指定的菜单条目
    参数:菜单句柄、目标菜单条目的标识符、控制标志(允许、灰化、禁止等)
    返回值:返回菜单以前的状态
  2. EnableWindow()
    允许或禁止指定窗口
    参数:窗口句柄、true/false
    返回值:0表示失败,非0表示成功
阅读全文 »

关于上周博客炸了的问题

原因是两个_config.yml(可能还有其他文件吧)里所有缩进都不见了…不知道是为啥,就甩给 vscode 和格式化代码插件吧(…)
然后,原来 .yml 要用缩进表示层级啊…
嗯顺便换了个主题

64 位软件逆向技术

虚函数

c++的三大核心机制是封装、继承、多态,虚函数是多态的一种体现。在逆向过程中,虚函数是一种还原面向对象代码的重要手段

虚表

不同的类虚表不同,相同的类对象共享一个虚表
(以下讲的是用 c++写的程序)
在构造函数中,首先初始化虚表指针,然后初始化数据成员,最后返回 this 指针

阅读全文 »

32位软件逆向技术

控制语句

条件设置指令(SETcc)

条件设置指令的形式是“SETcc r/m8”, r/m8表示8位寄存器或单字节内存单元
条件设置指令测试一些标志位,把结果记录的目标操作数中
测试:

  1. of(=1溢出)
  2. zf(=1操作后等于0/相等)
  3. cf(=1进位/低于)
  4. cf、zf结合判断
  5. sf(=1操作后结果为负)
  6. pf(=1,1个数为偶数)
  7. sf、of结合判断(=1小于)
  8. zf(=1或zf!=of,不大于)

https://brubbish.github.io/34199.html#标志寄存器

阅读全文 »

32位软件逆向技术

数据结构

计算机存储、组织数据的方式。确定数据结构后,算法就很容易得到,有时候也根据特定算法来判断数据结构

局部变量

局部变量分配空间时通常会使用栈和寄存器

阅读全文 »

就此开一篇单独记录 py 爬虫的学习以及实操中遇到的问题(可能吧)
(分割线用(***或—))

阅读全文 »

IDA

枚举

‘View’->‘Open subviews’->‘Enumerations’ 打开枚举窗口,按’Insert’插入新的枚举类型,按’N’添加成员
选中需要重新定义的数据,按’M’后将其转换
8etGNT.md.png

8etJ4U.md.png

阅读全文 »

IDA

四个快捷键

添加注释:冒号或分号
跳转到某个地址(16进制):‘G’;返回(后退):‘Esc’;前进:‘Ctrl+Enter’

交叉参考

可以知道指令代码相互调用的关系

'↑j’中j表示跳转,o表示偏移量,p表示子程序,双击或按回车可以跳到调用该处的地方
在‘loc_xxxxx’上按’x’打开交叉参考窗口

阅读全文 »

OllyDbg 学习

常用断点

int(interrupt) 3断点

在OD中用’F2’来设置,机器码是0xCC
执行一个int 3断点时,该地址处的指令首字节修改位CC(OD显示的还是原来的指令)

优点是可以设置无数个指令,缺点是改变了原程序机器码,容易被软件检测到,例如有些软件会检测api的首地址是否为0xCC

硬件断点

和DRx调试寄存器有关
DRx调试器共有8个(x从0 ~ 7)

阅读全文 »

(为了避免又发生某种奇怪的错误导致程序突然变成了前几个小时保存的版本,还是做完后把它弄到这来好了)
一个功能简单的管理系统,包含了menu()里的功能以及登录、注册和称不上加密的加密

尝试使用了system(“pause”)、system(“cls”)以及把黑框弄成白框的system(“color 70”)

阅读全文 »