调用框架。
2020-03-30 16:07:05 Author: bbs.pediy.com(查看原文) 阅读量:233 收藏

[原创]调用框架。

3天前 975

大家好,我是昆虫,十八岁青年,感觉活得像中年,技术不精,如果有错误之处,深感惭愧,望大神指正。

先说下我的学习历程吧,自学逆向快一年了,技术也是半桶水的样子,想发篇文章也是思考了很久,技术不怎么厉害还怕误导别人。

学这个逆向也报过班,但是自己技术真的不行,老师指导也不会,中间就退了,在这里我想对他说深感抱歉,添麻烦了。本来我是要转行了,但是心里还是有点不甘,就想再试试。

这个我自称的调用框架呢,基本就是这样:

自己在3环调用自己写在0环的函数。

-----------------------------------------------------------------------------------------

先说下我的3环和0环的通信方式

HOOK SSDT中的 NtReadVirtualMemory,传入指定参数说明要进行通信了



对于程序员来说,看源码是最好的。

安装调用框架:

因为我在3环是通过中断的方式进的0环,所以就构造了中断门。

这是我自己的服务函数表:

构造完中断门后,接下来就是初始化我自己的服务函数表:

这里我只限制了50个,可以自己改的。

这里我写了2个测试的函数:

那么,中断门的例程函数,我是用来寻找自己的内核函数和参数的:


可以参考内核是如何寻找的,我的原理跟它差不多:

不过它的调用号别有用途,我的就没这么复杂了


再看看我们添加自己的服务函数:

参数个数*4的原因是因为我的服务函数表 参数表里边存的是参数的总字节数。

效果演示图:

我自己初始化了2个服务函数


来看一下表里边的值:

这里边是参数表值:

效果图

来看一下我最后插入的那个函数,参数2是函数地址,参数3是参数个数,参数4为2代表插入新的服务函数,最后一个参数接收返回值。

来看一下此时表值:


为什么我设置7个参数,值为0x1c 呢,因为是4字节对齐的。


-------------------------------------------------------------------------------

好了,到这结束了。

守得雲開見月明。 

---

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最后于 1天前 被kc911编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-258390.htm
如有侵权请联系:admin#unsafe.sh