Crackme(持续更新当前进度3:160_又想打CTF坐牢了)
Acid burn(本地登录器)静态分析32位,无壳,Delphi程序。运行后输入账号:aaaa密码:aaaa,弹出错误弹窗。思路清晰直接IDA,找”Sorry,The serial is incorrect!”字符串。
动态调试在字符串的上方处找push ebp代码段开始下断点,重新执行发现代码段停在了断点处。经过动态调试后,确定函数功能,第一处if判断字符串长度<4跳出。第二处if判断注册机生产的密码和输入的密码是否一致。
代码实现123456789101112131415161718192021222324252627282930#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h> // 包含 strlen 函数的头文件int main(){ char Input_Name[10]; char Password[20]; // 假设密码最大长度为19个字符加上空终止符 char Key1[] = "C ...
无题
断点断点(F2),运行到这条指令后不执行这条指令,并且在断点出暂停。
断点表
断点表是最左边的图标,断点表显示了当前程序中所使用的所有断点包括断点的行为和使用情况。
条件断点进入断点表后,右键需要添加条件的断点,点击Insert就可以对断点的条件进行设置。
硬件断点进入断点条件设置在Settings选项中选择Hardware,就可以对硬件断点的模式进行设置。
三种模式,Read访问 Write写 Execute执行。
调试操作终止(Ctrl + F2),终止一个正在运行的进程。
步过(F8):执行一条指令,不查看详细的call函数的内部执行逻辑。
步入(F7):执行一条指令,进入函数体内部查看内部执行逻辑。
执行到返回(Ctrl+F7):执行到当前函数的返回后位置,步入了call函数后,可以直接跳出这个函数。
执行到光标(F4):执行到光标位置停下来。
运行直到断点(F9):运行。
设置程序计数器(Ctrl + N):将EIP或RIP修改为指针位置的地址。
调试器选择在调试选择框中选择合适的调试器,windows平台软件可以直接选择Local Windows debugger直接 ...
无题
初步分析火绒剑进程过滤,对样本进行监控。发现存在FILE_chmod文件属性设置行为下面三个路径下文件为设置属性对象。C:\Program Files (x86)\Microsoft Silverlighte\deep.exeC:\Program Files (x86)\Microsoft Silverlighte\medge.exeC:\Program Files (x86)\Microsoft Silverlighte\SmadHook32.dll存在对样本本身进行读写后创建写入并且修改的一个临时文件C:\Users\Administrator\AppData\Local\Temp~8189867498598202970.tmp类似的临时文件创建操作后删除的临时文件还有C:\Users\Administrator\AppData\Local\Temp\1370610961263116089\sg.tmpC:\Users\Administrator\AppData\Local\Temp\2722168636223513074.tmp
这次任务主要是抓释放的PE程序资源,deep.ex ...
无题
该恶意样本为恶意钓鱼安装包脚本(chrome-web.com)
文件目录分析参考:https://learn.microsoft.com/zh-cn/windows/win32/msi/role-based-guide-to-windows-installer-documentation
安装包为.msi文件,Windows Installer.安装包的数据使用msiexec.exe进行安装包的文件的释放。
恶意行为分析文件行为分析安装后
注册表行为分析网络行为分析
网络渗透基础(完成更新)
复合类型和结构体结构体结构体定义和引用1234567//定义一个二维坐标的结构体struct complex_struct{ double x,y;}z1,z2;//对定义的结构体进行引用struct complex_struct z3,z4;
定义了结构体后就可以对结构体类型进行引用,也就是可以重新定义类似z1,z2这样的变量。
结构体初始化和赋值结构体变量可以在定义的时候进行赋值。
1234//直接进行变量的顺序初始化struct complex_struct z={3.0,4.0}//在变量后多使用一个,不会产生超出变量数量的影响struct complex_struct z={.x=3.0,.y=4.0,}
乱序和顺序初始化的结果没有区别,乱序初始化直观,成员可以不按照顺序进行初始化,可以更好的对成员变量进行维护。乱序初始化可以只初始化某一个对象,而不是顺序初始化全部的对象,乱序初始化默认将没有赋值的成员变量进行赋值为0。
顺序初始化1234struct complex_struct z1={ . ...
x86_汇编(持续补充)
进制转换二进制八进制十六进制
寄存器通用寄存器32位|16位|8位|二进制编号eax |ax |al |000ecx |cx |cl |001edx |dx |dl |010ebx |bx |bl |011esp |sp |ah |100ebp |bp |ch |101esi |si |dh |110 //源寄存器edi |di |bh |111 //目标寄存器寄存器的结构 32位寄存器由两个16位寄存器组成,低位16位寄存器由两个8位寄存器组成。
常用的汇编指令(对不同位数寄存器的操作不同,汇编指令对应的硬编码不同 查表)mov指令使用mov指令 拷贝源操作数到目标操作数1.源操作数可以是立即数,通用寄存器,段寄存器,内存地址2.目标操作数可以是通用寄存器,段寄存器,内存地址3.数据宽度使用时必须一致,如:mov r8/m8,r8 源操作数必须使用8位的数据宽度4.mov指令的源操作数和目标操作数不能同时为内存地址
使用mov指令对内存地址进行操作add指令(+)目标操作数与源操作数进行加法运算,结果保存到目标操作数
...
网络渗透基础(完成更新)
6/15简单C程序的汇编代码分析实验环境配置为win11,VS 2022.
创建一个C程序实现一个空函数的调用12345678void Fucntion1(){}int main(){ Fucntion1(); return 0;}
测试函数
123456789void __declspec Fucntion1(){}int main(){ Fucntion1(); return 0;}该函数运行时会报错,会jmp到没有初始化的代码段。
根据所使用的编译器,编译器(根据所使用的调用约定对参数进行入栈或者使用寄存器进行传参对参数进行使用)会对静态函数进行补充对函数的实现进行补充。使用__declspec关键字编译器将不会对自定义的静态函数进行补充,也就是说不会对这个函数进行操作,真正意义上的空函数。__declspec关键字可以放在简单声明的开头,编译器会在不发出警报的情况下忽略位于声明中的*或者&后面以及变量标识符前面的任何__declspec关键词。参考:ht ...
无题
ArchLinux安装序言ArchLinux 系统安装的前三个步骤主要参考ArchLinux Wiki,网络配置根据自己所使用的网络环境进行配置。图形化界面选择的是Xorg+Gnome的组合(后续会根据使用情况选择Wayland,我选择这个组合主要是因为稳定但是功能较为老旧)。输入法选用Google pinyin,基于fcitx小企鹅输入法进行配置(需要安装fcitx configtion),如果需要使用fcitx5输入法,需要重新安装fcitx5(fcitx5和fcitx是独立的两个输入法).
安装前准备虚拟机镜像下载清华源下载(https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2024.06.01/)
虚拟机创建使用VM对虚拟机进行创建,创建虚拟机时需要将引导方式修改为UEFI。(步骤: 虚拟机-设置-选项-高级-固件选项 修改为UEFI)
对虚拟机内存进行分区cfdisk图形化界面对内存进行分区,我觉得要比输入命令更直接.
安装系统配置系统配置网络安装图形化界面安装中文输入法(google-pinyin)
常见加密和编码
ASCII码参考:https://www.runoob.com/w3cnote/ascii.htmlASCII码作用在于编码,将二进制数编码(一个字节8位的二进制数据)为常用的英文字符和符号并且显示出来。
C语言中对ASCII码的引用直接将字符串定义char以int类型输出。
1234567891011121314#include <stdio.h>int main(){ char c; printf("输入一个字符: "); // 读取用户输入 scanf("%c", &c); // %d 显示整数 // %c 显示对应字符 printf("%c 的 ASCII 为 %d", c, c); return 0;}
Unicodeunicode编码作为ASCII码的拓展,执行相同的功能,但是同时Unicode需要使用两个字节的数据。
BASE64编码编码方式1 字符串的ASCII进行二进制形式编码2 编码后的二进制字符串进行3字节 ...
广告安装包恶意样本分析
目标对特定安装包文件进行逆向:1、搞清楚该类型安装包具体名称。2、搞清楚该安装包的内部信息存储结构,尝试解析存储结构中字段的含义并使用结构体实现相关定义。3、搞清楚该安装包内嵌文件的存储方式,以及如何还原出内嵌文件。4、在2,3步的基础上通过代码实现该类型安装包的解包程序(输出包内部信息,甚至于可以还原出包内的内嵌文件)。
工具使用IDA32 OD(工具在x64window7虚拟机中运行出现问题) Virus total样本检测网站 windows7 64位虚拟机火绒对病毒进行了判断为Trojan/Generic!258124441FE9E3AC类型病毒 表示该样本存在有木马
winmain主函数分析关键函数(NsResGetBuff)函数使用了windowsAPI
GetModuleHandleW检索指定模块的模块句柄。 模块必须已由调用进程加载HMODULE GetModuleHandleW( [in, optional] LPCWSTR lpModuleName//加载的模块的名称 (.dll 或 .exe 文件));
FindResourceW确 ...