西湖论剑wp

  1. BabyRE

西湖论剑wp

BabyRE

给数组中的每一个函数都设置断点

开始动调,第一个函数,给输入的值进行检验是否是数字image-20230215100917313

第二个函数进行按位取反image-20230215101120897

取反后的结果image-20230215101335001

下个函数是IAT hook .替换GetLastError函数 替换为sub_4019D0函数image-20230215101601229

GetModuleHandle函数:获取一个应用程序或动态链接库的模块句柄

GetModuleHandleA(0);返回0x00400000,而*模块句柄实际上就是模块在当前进程空间的装入地址。exe程序装入句柄一般为 0x00400000 。所以GetModuleHandle(NULL); 返回的值为 0x00400000;GetModuleHandle(“kernel32”);返回值是0x7c800000(这个值正是kernel32.dll中的Image base的值)。*

这里lpModuleName为kernel32image-20230215111115149

然后在kernel32模块中找GetLastError函数地址再将其替换这就是hook IAT的过程:先从程序句柄0x00400000中找kernel32.dll再从kernel32中找getlasterror。刚好两个循环

这里双击也可以查看image-20230215111553991

image-20230215111607580

再给替换的函数加上断点image-20230215101638875

注意dword_4085C0是IAT之后的GetLastError函数

下一个函数是替换dword_408148的值image-20230215101915168

C 库函数 int atexit(void (*func)(void)) 当程序正常终止时,调用指定的函数 func。您可以在任何地方注册你的终止函数,但它会在程序终止的时候被调用。func – 在程序终止时被调用的函数。

如果有多处atexit那么执行顺序是什么呢?

#include<stdio.h>
#include<stdlib.h>

void functionA ()
{
   printf("这是函数A\n");
}

void functionB ()
{
   printf("这是函数B\n");
}

void functionC ()
{
   printf("这是函数C\n");
}

int main ()
{
   /* 注册终止函数 */
   atexit(functionA );
   
   printf("启动主程序...\n");
   atexit(functionC );

   printf("退出主程序...\n");
   atexit(functionB );

   return(0);
}

image-20230215105209445

可以看出来多出atexit是以栈的执行顺序调用的

所以总结一下执行顺序

  1. sub_401170 输入检验 ->
  2. sub_401230 对某一内存数据进行按位取反
  3. sub_4012B0 IAT hook 替换GetLastError函数 替换为sub_4019D0函数
  4. main sub_4019D0 dword_408148, “dcbahgfelkjiponm”
  5. sub_401670 base8 加密后memcmp(&unk_4081D0, a16230465152334, 0x60u);
  6. sub_4015C0 sub_401CC0加密后memcmp(Buffer, a67339fc92b4875, 0x28u);
  7. sub_4014E0 执行RC4,后比较密文memcmp(&unk_4084C0, &unk_408090, 0x70u) )

ebpf程序:eBPF 于 2015 年推出,是 Linux 的 一项 功能,可以直接在 Linux 内核中运行程序,而不是在无法直接访问内核资源的“用户空间”中运行程序。 eBPF 源于 BPF,本质上是处于内核中的一个高效与灵活的虚类虚拟机组件,以一种安全的方式在许多内核 Hook 点执行字节码。

资料链接:

VT是什么意思?

VT,全称是,Virtualization Technology,即是虚拟化技术,虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

VT实现:VT 入门番外篇——最小 VT 实现 - 寂静的羽夏 - 博客园 (cnblogs.com)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏