博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读<<IDA pro权威指南>>之动态计算目标地址
阅读量:6424 次
发布时间:2019-06-23

本文共 1358 字,大约阅读时间需要 4 分钟。

hot3.png

<<IDA pro权威指南>> p348页,另一种技巧常用于面向Windows的恶意软件中,它配置一个异常处理程序,并有意触发一个异常,然后在处理异常时操纵进程的寄存器状态。

下面的例子被tElock反逆向工程工具用于隐藏程序的真实控制流。

00535FC2    E8 00000000     call    00535FC700535FC7    5D              pop     ebp                              ;相当于ebp = 00535FC700535FC8    8D45 46         lea     eax, dword ptr [ebp+46]          ;0053600D00535FCB    45              inc     ebp00535FCC    50              push    eax                              ; push 后,esp = 0018FB5800535FCD    33C0            xor     eax, eax00535FCF    64:FF30         push    dword ptr fs:[eax]               ; push 后,ESP = 0018FB5400535FD2    64:8920         mov     dword ptr fs:[eax], esp          ;fs:[0] = 0018FB5400535FD5    90              nop00535FD6    F7F1            div     ecx                              ;引发除0异常00535FD8    0000            add     byte ptr [eax], al00535FDA    0000            add     byte ptr [eax], al00535FDC    90              nop

执行完 00535FD6后,程序引发异常,堆栈如下:

121624_LQH2_1044317.png

可以看到0018FB54栈上存放指向一个SEH记录的指针

             0018FB58指向一个SE处理程序的指针

而这个刚好满足_EXCEPTION_REGISTRATION_RECORD结构

0:003> dt _EXCEPTION_REGISTRATION_RECORD

ntdll!_EXCEPTION_REGISTRATION_RECORD

   +0x000 Next             : Ptr32 _EXCEPTION_REGISTRATION_RECORD

   +0x004 Handler          : Ptr32     _EXCEPTION_DISPOSITION 

也即0053600D为事先注册的SEH异常处理程序的地址,0018FB5C为指向下一个SEH记录的指针

这样也达到了必须计算才能跟踪程序流程的目的,隐藏了程序的真实控制流。

转载于:https://my.oschina.net/Yuqingmu/blog/393245

你可能感兴趣的文章
zabbix安装源
查看>>
Eclipse+kafka集群 实例源码
查看>>
Vijos 1067Warcraft III 守望者的烦恼
查看>>
SQL语句
查看>>
LinkedList
查看>>
Python number
查看>>
【Lv1-Lesson008】A Guide to Birthdays
查看>>
MySQL_PHP学习笔记_2015.04.19_PHP连接数据库
查看>>
关于RFC
查看>>
juery 选择器 选择多个元素
查看>>
【新手向】TensorFlow 安装教程:RK3399上运行谷歌人工智能
查看>>
Oracle Net Configuration(监听程序和网络服务配置)
查看>>
c语言_判断例子
查看>>
ubuntu重启不清除 /tmp 设置
查看>>
面向对象
查看>>
JSON
查看>>
SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限
查看>>
16.Python网络爬虫之Scrapy框架(CrawlSpider)
查看>>
stm 常用头文件
查看>>
mac 删除文件夹里所有的.svn文件
查看>>