前言
~~~
本来几天前就可以写的,可是一直没什么时间。
终于考完试了,可以和师傅们面基了。
magic
http://wemedia.ifeng.com/65490822/wemedia.shtml
https://www.52pojie.cn/thread-742361-1-1.html
这两篇文章写的很详细了,结合起来看。
主要的我觉得是windows下的 onexit
函数在程序退出时对地址进行回调,类似的linux下有个相同功能的函数atexit
基本上都会有一个假的入口,让我们入坑,我们可以通过trace进行跟踪,找到正确的逻辑后便可以进行下一步分析。
另外一点就是对程序代码的复用,我觉得有以下三种思路:
1. 通过ida的伪c代码,得到c代码
2. 如果是windows程序,那么可以通过loadlibrary
进行地址空间的回调(注意目标平台,此题中要选择x64平台编译)
3. 动态调试,在运行时修改数据
具体的此题中,我用的是二、三方法,主要是第一种方法我觉得代码量太大不好把握。
我看官方的wp中multiasm写shellcode调用程序自身代码
不是很明白怎么操作,以后有机会一定要学习下。
补充:multiasm是od,x32,x64的一款插件,需要自己写汇编
最后就是逆向虚拟机,对字节码进行分析,这确实感到很困难,需要很强的抽象的能力,之前做过olvm
都还能理解,但这~~。
首先根据if else
找出操作码,相当于mov
的字节码,然后分析出具体的指令,每条指令进行对应,接下来便是痛苦的将指令对应成汇编代码,而后抽象出伪c代码,一般加密算法不会太难,有个xor
就差不多了吧,在复杂就想撞墙了。
总结
-。-
转载自原文链接, 如需删除请联系管理员。
原文链接:XMAN【第几天?】magic,转载请注明来源!