添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
狂野的人字拖  ·  IDAPro7.6SP1(x86,x64,A ...·  6 天前    · 
傲视众生的警车  ·  python - Stacking ...·  1 年前    · 

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

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

00535FC2    E8 00000000     call    00535FC7
00535FC7    5D              pop     ebp                              ;相当于ebp = 00535FC7
00535FC8    8D45 46         lea     eax, dword ptr [ebp+46]          ;0053600D
00535FCB    45              inc     ebp
00535FCC    50              push    eax                              ; push 后,esp = 0018FB58
00535FCD    33C0            xor     eax, eax
00535FCF    64:FF30         push    dword ptr fs:[eax]               ; push 后,ESP = 0018FB54
00535FD2    64:8920         mov     dword ptr fs:[eax], esp          ;fs:[0] = 0018FB54
00535FD5    90              nop
00535FD6    F7F1            div     ecx                              ;引发除0异常
00535FD8    0000            add     byte ptr [eax], al
00535FDA    0000            add     byte ptr [eax], al
00535FDC    90              nop
执行完 00535FD6后,程序引发异常,堆栈如下:

可以看到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

原文链接: https://my.oschina.net/Yuqingmu/blog/393245 跳转到 地址 使用Jump▶Jump to Address命令或在处于活动状态的反汇编窗口中按下热键G,均可以打开Jump to Address对话框,如果把这个对话框看成Go对话框,可能有助于你记住相关的热键。 IDA 会记住你在这个对话框中输入的值,并通过一个下拉列表显示,以方便你随后使用 用G定位函数的方法:例如在编辑框中输入fopen 那么就可以定位到函数的具体 地址 的详细信息了。网络安全入门学习路线其实入门网络安全要学的东西不 多,也就是网络基础+操作系统+中间件+数据库,四个流程下来就差不多了。1.网络安全法和了解电脑基础其中包括操作系统Windows基础和Linux基础,标记语言HTML基础和代码JS基础,以及网络基础、数据库基础和虚拟机使用等...别被这些看上去很多的东西给吓到了,其实都是很简单的基础知识,同学们看完基本上都能掌握。 这里调用,然后调用入口程序相当于这里才是一个进程开始执行的地方这里有一个call调用,跟进去看看发现有修改fs:[0]的操作,这里就相当于编译器为我们注册了一个异常处理函数这里到里面的里面看一下,这里有一个注册SEH异常处理函数的操作//{int i = 1;return 0;return 0;可以发现线程也是从开始的然后跟进调用可以发现还是注册了一个异常处理函数还是去 IDA 里面看函数,发现也注册了一个SEH异常的函数。 在使用 ida 分析 .sys文件时,发现几乎所有的函数名都是 sub_ 地址 的形式,和别人的不一样,一开始没想明白为什么? 后来查了一下,发现是因为.sys文件里没有符号表导致的。 为什么会没有符号表呢?一般的可执行文件或库文件都会有符号表,但符号表会占据一定的体积。所以为了减小内核的体积,会把符号表去除。 要想进行分析,我们就要拿到符号表,而windows 的符号表其实可以从网上下载... 一个隐藏 IDA 调试器的小技巧 很多 IDA 使用者都向我索要一个可以隐藏调试器的插件或功能。事实上,有很多反调 试的手段,而针对每一种反调试的手段都需要对应一种处理方法。我们先从一些简单的开始, 我们的目的是让 IsDebuggerPresent 函数始终返回 0 值。 当一个调试器处于运行状态时,我们可以在反汇编窗口使用”go to the specified address”