WinDbg双机调试
WinDbg双机调试双机调试软件VirtualKD
玄学问题 - 版本差异无法调试问题
建议使用版本:VirtualKD-Redux-2020.5
VirtualKD-Redux-2020.5.zip
符号表Windbg界面按CTRL+S
1SRV*D:\symbols_folder\i386*http://msdl.microsoft.com/download/symbols
12## 重新加载.reload /f
其他方法:
参考文章:https://bbs.kanxue.com/thread-251052.htm
Windbg和mona常用指令
Windbg和mona常用指令// 漏洞挖掘
mona
.load pykd.pyd // 加载python模块的动态链接库(Python Dynamic Link Library)
!py mona pc 3000 //生成序列fuzz字符串
!py mona modules //列出程序模块的安全措施等
!py mona po 溢出点 //定位溢出点偏移量
!py mona jmp -r esp -m "kernel32.dll" //在指定模块寻找指定命令
!py mona find -s -m
xse id msxml3.dll // 加载模块时下断点
windbg
123456789.help!process!threadk 堆栈lm 加载模块.reload 重新加载当前调试目标并且保留当前状态!heap -a -p <addr> 查找堆块起始位置db dw dd dq 按类型读取
PE导入导出表解析
导入表解析导入表结构在程序加载前INT和IAT内容一致指向同样的结构体,但是在程序加载后INT不变但是IAT会变PE加载器填充为函数地址。
12345678910111213141516171819202122232425262728// 导入表VirtualAddress指向的导入表typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; DWORD OriginalFirstThunk; //(1) 指向导入名称表(INT)的RVA* }; DWORD TimeDateStamp; // (2) 时间标识 DWORD ForwarderChain; // (3) 转发链,如果不转发则此值为0 DWORD Name; // (4) 指向导入映像文件的名字* DWORD FirstThunk; // (5) 指向导入地址表(I ...
常见注入方式学习
远程线程注入(DLL注入)
加载DLL,dllMain执行
原理:利用远程线程回调函数执行代码所导致的注入
流程:在目标进程中创建远程线程,线程回调函数传参LoadLibrary,传递DLL路径作为回调函数,也就是LoadLibrary的参数。线程执行LoadLibrary后加载DLL并执行。
优点: 相对稳定。
缺点: 易被检测。
123456789101112131415161718192021222324252627282930313233343536#include <iostream>#include <windows.h>#define DLL_PATH L"D:\\Debug\\injectDLL.dll"// 具体流程:// 获得目标句柄,申请空间存放变量// 创建远程线程并记载到目标进程中,线程回调函数调用动态库加载API函数// 从而执行自定义代码(线程回调函数加载LoadLibiary方式进行的远程线程注入)int main() { // 注入流程: // 得到目标句柄,进行控制(创建线程,并加载自 ...
Delphi程序逆向
Delphi程序逆向Delphi是是使用Pascal语言的一种开发工具,类似于MFC,是一种封装好的界面开发环境。
函数调用约定Delphi遵循_fastcall调用约定,但是与Windows的_fastcall略有不同,参数顺序为eax为第一个参数、edx为第二个参数、ecx为第三个参数,大于3个的参数通过堆栈传递,大于三个的堆栈顺序从左到右依次压栈,堆栈由被调用者恢复。
变量结构定义Delphi常用的字符串的内存布局不同于C/C++的char*或则string对象,Delphi使用的字符串都是Pascal的字符串,在原始字符串前面存放的是字符串的长度.
逆向建议
控件绑定着响应回调函数,可以在Delphi程序的RCDATA资源中查看到。
因为IDA针对Delphi库函数识别不高,使用专用反汇编工具解析。使用IDR解析后生成idc脚本文件供IDA导入函数。
IDA里边设置函数识别库为对应版本的语言函数库
手动微调:
Load a new file,取消勾选的Analysis下的两个自动分析选项
Options–>Compiler:Compiler(Delphi) ...
IDA-Python设置
IDA-Python设置版本切换1py -版本
1234利用环境变量下寻找变量名的方式更改文件名,从而实现打开不同版本的程序python27python37
环境变量
变量名
描述
PYTHONPATH
PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。
PYTHONSTARTUP
Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。
PYTHONCASEOK
加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.
PYTHONHOME
另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。
PYTHONHOME环境变量用于告诉Python解释器其基本安装路径
PATH用于指定系统查找可执行文件的路径。
所以部分python加载问题中,可以通过添加PYTHONHOME来解决pyhon配置问题
例如:IDA中的import site failure,可以通过设置 ...
Butterfly主题美化
更换主题
安装
12git clone -b master [<https://github.com/jerryc127/hexo-theme-butterfly.git>](<https://github.com/jerryc127/hexo-theme-butterfly.git>) themes/butterflynpm install hexo-renderer-pug hexo-renderer-stylus --save
hexo5.0版本以上:npm i hexo-theme-butterfly
安装渲染:npm install hexo-renderer-pug hexo-renderer-stylus --save
修改配置文件
1theme: butterfly
自定义样式
外部引入
项目根路径\\themes\\butterfly\\source\\css\\index.styl中引入自定义的css文件(为避免样式覆盖,放在最下面进行定义),也可在此引入外链css
12345// 引入自定义css@import '_ ...
all will be fine
城市万家灯火,暂歇长安,临江寄灯火望游思于天际。
起风了~