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函数
【.NET】
starg 2什么意思
从栈顶取值并存到第2个参数
Inter处理器是大端还是小端,小端是什么意思
小端 小端:高地址高位,低地址低位 如0x11223344,内存中就是 低地址------------>高地址 0x44,0x33,0x22,0x11
请画出pe文件格式简图
各种区块 区块表 pe头 dos stab dos头
【.NET】
TypeDef的Extends项错误怎么办
CFF打开,在表中TypeDef的第一项处的Extends项改为0
用Alt+M在内存中搜ctrl+B字符串时,搜到了以后怎么做
在搜到的地址下内存访问断点或硬件断点 或 反汇编窗口搜索:push+搜到的地址 或 在反汇编窗口搜索常量:搜到的地址 或 反汇编窗口中哦过呢ctrl+b搜索:搜到的地址(小端)
【破解】
脱壳后有的文件会自校验大小怎么办
设置api断点,GetfileSize,f9,看堆栈反汇编跟随,用户凌空下断点
【.NET】
ldfld 什么意思
从栈顶取实例指针,然后按照取字段并入栈
【.NET】
ldloca 2什么意思
载入第2个局部变量的引用并入栈
【.NET】
请说出以下各类说明的意思: .namespace .class .method .field .data .custom
.namespace 名称空间声明 .class 类声明 .method 方法声明 .field 字段声明 .data 数据(常量)声明 .custom 自定义属性声明
【.NET】
switch-case在.Net逆向中怎么用的
switch …
写法:
switch(Label1,Label2,Label3,...,LabelN) ...... //Default case Label1: ...... Label2: ......
switch 会建立跳转表,从栈顶取
根据这个的值选择跳转目标,值为0则跳到Label1
(A xor B)xor B = ?
A
异或的异或是本身
【破解】
如果程序检测到正在被调试怎么办?
说出三种方法
方法1:
反复重新载入,直到不出现提示为止,然后shift f9
方法2:
HIDEOD
方法3:
换个OD
【.NET】
localloc什么意思
分配一块局部内存,该指令从栈顶取块的大小,并将分配的内存块的托管指针入栈
IDA PRO快捷键考察:
把机器码变为汇编
从当前地址处解析成函数
解析成数据
解析成ASCII
取消把函数汇编成机器码
交叉引用
变成C伪代码
搜索文本
C 把机器码变为汇编
P 从当前地址处解析成函数
D 解析成数据
A 解析成ASCII
U 取消把函数汇编成机器码
X 交叉引用
F5 变成C伪代码
Alt+t 搜索文本,Ctrl+t查找下一个
【.NET】
下面都是什么意思? manifest: Program: .ctor: Main:
manifest:清单
Program:是一个Program类
.ctor:方法
Main:静态方法
【.NET】
如何反流程混淆
针对{smartassembly}:{smartassassin},{smartkill}
针对Dotfuscator:DeDot
万能反混淆神器De4Dot
如果2层壳,根据他的提示可以将其一层一层的脱掉,如下所示:(顺序不能错,只能先de4dot 文件名 -p mc,再de4dot 文件名 -p df)
【.NET】
请说出round-tripping的步骤
ildasm中dump后(勾选line numbers,其他默认):一个资源文件,一个IL文件
修改后直接将俩文件拖到ilasm图标上
用ilasm再编译回去,运行命令:
在SDK命令行中:
ilasm /resource=hellodump.res hellodump.IL #生成release版
ilasm /debug/resource=hellodump.res hellodump.IL #生成debug版
函数调用大致包括几个步骤?
1、参数入栈
2、返回地址入栈
3、跳转到函数入口
4、栈桢调整:序言+结尾
【破解】
易语言中,非独立编译的按钮事件在哪里?
【E】中的fnr段中
在OD中,发现这个函数名太不好记了,想要更改函数名,怎么办?
去函数地址,右键,编辑标签