0x1000D02E
ctrl+f 搜索gethostname
得到地址0x100163CC
按x共得到18个
p 开头为函数调用
r 开头为read读取
找p,然后去除重复得到5个函数调用了gethostbyname
按g跳到指定地址
是off_10019040的值影响了eax
得到字符串[This is RDO]pics.praticalmalwareanalys 后面是网址
[This is RDO]长度为0x0d add eax,0d刚好是网址起始位置
var 开头为局部变量,23个局部变量
有一个参数
shift+f12 跳转到strings窗口,然后搜索cmd即可,跟进去得到0x10095B34
向上查看
跟进去查看,远程shell会话
向下看,可能为攻击者开启了一个远程会话
g跳转到Ox100101C8
然后交叉引用
w 是write
r 是read
write影响值所以选第一个
eax为上一个call的返回值
跟进函数sub_10003695查看
查询系统版本
platformid与2比较是判断是否为win32-NT系统
函数返回值为系统版本信息
g定位到0x1000FF58
memcmp比较相等为0
jnz不是0则跳转
题目设memcmp返回0则不跳转,调用sub_100052A2函数
函数会打开注册表的这个位置
访问注册表的值
跟进函数发现通过send发送
view里查看
点进去
查看第一个call
空格
MajorVersion是判断是否为Vista以上还是Vista以下
esc返回,先看左边的call
CreateToolhelp32Snapshot:获取系统中进程或线程信息
esc返回查看右边的call
这个函数里也有CreateToolhelp32Snapshot
PSLIST函数的作用可能是将系统进程信息发送远程
首先找到这个函数
找到user xrefs chart
点ok
弹出图片,箭头所指的都是有有可能调用的api函数
GetSystemDefaultLangId获取系统默认语言
sub_1000eE79函数主要是获取系统默认语言
将函数重命名为GetSystemLanAndSend
找到这个函数使用同样的方法
第一层调用,strncpy、CreateThread等
第二层调用,sleep,winexec、memcpy等
g跳到这个函数
eax受off_10019020影响,查看off_10019020
内容为 [This is CTI]30
add eax,0dh 即获取到30
将30转换为数值
30*3e8h = 30000
休眠时间为30000毫秒即30秒
g定位
得到2、1、6
2是第一个参数
msdn找到af
2代表AF_INET,这道题让我们将2转换为AF_INET
2右击
找到AF_INET确定
转为字符方便查看
6代表IPPROTO_TCP
相同方式转换
search ,sequence of bytes
找到in语句
进入后将564D5868h转换为字符
这块可能是判断是否为vmware虚拟机
空格,找到函数头,交叉引用
查看第一个
Found Virtual Machine,Install Cancel即发现虚拟机,安装取消
Lab05-01.py
sea = ScreenEA() # 获取鼠标位置
for i in range(0x00,0x50):
b = Byte(sea+i) #获取每一行的字符
decoded_byte = b ^ 0x55 #将每一行字符 ^ 0x55
PatchByte(sea+i,decoded_byte) # 修复后加载出来
Lab05-01.idc
#include <idc.idc>
static main(){
auto sea = ScreenEA(),b,i,decoded_byte;
for(i=0x0; i<0x50; i++){
b = Byte(sea+i);
decoded_byte = b ^ 0x55;
PatchByte(sea+i,decoded_byte);
}
}
鼠标放在第一个字符上script file选择脚本
打开脚本后解密成功
按a