Windows 逆向 Flashcards
【.NET】
endfinally什么意思
表示finally或fault块的终结,并清空堆栈
【.NET】
ldc什么意思,下面分别什么意思:
ldc. i4
ldc. i4.m1
ldc. i4.1
载入,即入栈
ldc. i4 载入4字节
ldc. i4.m1 载入-1
ldc. i4.1 载入1
【破解】
外挂总是跳网址怎么办
下ShellExecuteA断点
【.NET】
一个方法,如果有返回值,ret执行时栈顶是什么样子的?
如果返回值是void,ret执行时栈顶是什么样子的?
如果有返回值,栈顶应有相应的值
如果返回值为void,ret执行时堆栈应为空
【.NET】
.stloc 6什么意思
从栈顶取值存入第6个寄存器
【破解】
遇到cmp ax,0xffff
意味着什么
85%都是vb用于判断的树枝,基本确定这个就是关键跳
【.NET】
请说出结构中程序头中字段的意思:
.assembly
.assembly extern
.module
.assembly 声明本程序集名称
.assembly extern 声明外部(被引用)程序集名称
.module 声明主模块名称
【.NET】
名称混淆都有哪些形式
乱码
无规律长字符串
无规律短字符串
()[]{}.形式
【.NET】
ldarg 2什么意思
载入第2个参数并入栈
【.NET】
源代码(IL或C#)中会多出某个特殊的属性定义来保护程序,怎么办
源代码(IL或C#)中会多出某个属性定义,把这个属性删除即可 (用round-tripping) 相关保护属性有: DebuggerHiddenAttribute DebuggerNonUserCodeAttribute DebuugerStepThroughAttribute SuppressIldasmAttribute IL里面格式形如[DebuggerHiddenAttribute]或[assembly:DebuggerHiddenAttribute]
【.NET】
windows文件名只支持少数字符,且不支持乱码,某些符号,空字符串作为文件名来保护程序,该如何应对
在源文件中奖资源文件改名为Windows文件系统允许的名称,然后使用ildasm反编译,再次编译回可执行文件时,尽量将名称再修改回去,以保证源代码中对资源的调用正常
stfld 什么意思
从栈中取出待存数据和实例指针,并将数据存储到对应的字段中
【破解】
如何应对退出暗桩
用od的api插件-程序退出断点下断
【破解】
如何给代码区块(.text)赋予写权限(共2种方法)
方法1:dump找4000000,右键指定pe头,找到第一个区块(.text区块),看到charactoristics,把60000020改为E0000020
方法2:lordPE -> PE编辑器 -> 区段 ->编辑,把60000020改为E0000020
说出二次开发的常规流程
找个空白处 做个dll exe中添加倒入函数 exe中添加个菜单选项 进入WndProc中hook这个函数
如何判断是不是网络验证
网络验证有延迟
如何手动分析花指令
用run跟踪(run trace) 在调试选项里把跟踪缓存调到最大 断下后在调试中点击开始跟踪 查看-run 跟踪,右键保存到文件 Ctrl+F12跟踪步过,就记录了走了那些命令 建议使用Imm
【.NET】
.text区块结构有什么
输入表 CLR头 MSIL代码,异常处理表(可选) 强名称的hash数据 元数据: 元数据头 元数据流 托管资源数据(可选) 非托管资源(可选) 运行时启动信息
OD中,如何让程序运行到光标所在位置
如何从制定位置开始运行
程序跑飞怎么办
F4
右键-此处设为新eip
在下面一行f2,去按钮【t】,激活全部线程
【.NET】
not是什么意思
neg是什么意思
二者什么关系
not:取反
neg:求补
补码就是对一个数取反再加1
暗桩的关键字符串有哪些
physicaldrive0: 跟随,00填充 破,破解 ntfs,format,本地磁盘,kill debug,ollydbg 断首retn
【破解】
回想一下push大法绕过登陆
绕过网络验证登录,显示其他窗体: 右键查找二进制字符串,搜索hex,ff 25,易语言特征, 向上看那个过程,在第一个加载的窗体id下断(push xxxxxxxx), 这个窗体id是总窗口,我们需要登录后的窗口,右键查找命令, push 10001,找到需要的窗口id(如果不是需要的窗体,查找下一个10001), 这样两个id都知道了,把第一个push窗口id换成登录成功那个id就可跳过登录。
push法窗体id找不到:
每个push段都有一个call,回车call会去jmp xxx的易语言体,主要在所有jmp处下断,看堆栈就能找到窗体id,如果有没加壳的窗体,可以依照它结合堆栈还原窗体
push法应对暗桩 ,od载入修改后有暗桩的程序:
自动退出暗桩:在api常用断点>程序退出下断,堆栈看下面返回到xxxx,跟随。
易语言一堆push表示创建窗体
特点:
push。。。 push。。。 push。。。 push。。。 mov 。。。 call 。。。 add esp 。。。这就是一个窗体或弹窗段
【.NET】
stind什么意思
stind.ref什么意思
间接存储:从栈顶先后取一个值和一个指针,并将该值存储到指针所指位置
stind.ref 存储一个对象引用
静态分析时怎么才能找到main函数
由于main函数实际要压入三个参数,所以在GetCommandlineA函数下面不远处可以找到有三个push的,就是main函数