对学生机房管理助手7.1 “随机”进程名的分析

先把 prozs.exe 脱壳,然后开始分析。

程序启动,加载 Form1 窗口。

image-1 (2).png

显然可以看出,运行了 bUI3KruAM 这个函数,跟进去看一下里面干了什么。

image-2 (2).png

很明显可以看到,有一个复制文件的操作。先把 prozs.exe 复制一份,并且启动复制的程序,然后退出。

image-3 (1).png

通过代码第193行可以看到 this.f3DMZSZED 就是新的文件名,而且一定是以 "p" 开头。这里又出现了一个变量 str,不难发现变量 str 是将两个ASCII码转成字符拼接起来。

image-4 (1).png

可以看到在 IL_5E 处有一个判断,如果 num3 % 2 != 0num3 奇数)就跳到 IL_8F 处,否则就运行 IL_66 处的代码。

num3 是奇数时,这两个ASCII码分别是 102 + num598 + num4 (在IL_8F处);num3 是偶数时,这两个ASCII码分别是 99 + num4106 + num5 (在IL_66处)。在 IL_B6 处的 this.FbXQlCftU = "p" + str; 这一句没有什么实际意义,真正的文件名在 IL_CB

结合刚才的逻辑,再继续研究 num4 num5,结合变量 str 的赋值语句,那就是下面的流程

int num3 = DateAndTime.Month(DateAndTime.Now) + DateAndTime.Day(DateAndTime.Now);
int num4 = num3 % 3 + 3;
int num5 = num3 % 4 + 4;
if (num3 % 2 != 0) 
    str = Conversions.ToString(Strings.Chr(102 + num5)) + Conversions.ToString(Strings.Chr(98 + num4));
else 
    string str = Conversions.ToString(Strings.Chr(99 + num4)) + Conversions.ToString(Strings.Chr(106 + num5));

this.f3DMZSZED = "p" + str + ".exe";

现在这个“随机”文件名就很清楚了,

就是取 现在的月份 加上 现在是一个月的第几日 得到 num3

num3 除以 3 求余数加上 3 得到 num4

num3 除以 4 求余数加上 4 得到 num5

如果 num3 是奇数,则将 num5+102 与 num4+98 分别换成对应的字母并拼接起来得到 str,否则将 num4+99 换成对应字母,将 num+106 换成对应字母,拼接起来得到 str,

那么最终文件名就是 "p" + str + ".exe"

来做个测试,今天是3月11日。那么

num3 = 14; num4 = 5; num5 = 6;

num3 是偶数,则 str = "hp";

最终文件名为 php.exe。上机测试,结果正确!

image-5.png

本文链接:

https://blog.nkxingxh.top/archives/70/
1 + 7 =
2 评论
    BF-1Chrome 94Windows 10
    2022年05月25日 回复

    https://blog.csdn.net/weixin_57476554/article/details/124526266
    我是作者BF-1
    您的软件至少比我优秀几个数量级了!
    能和你学习一下吗?

    ZhangSH2020Chrome 99Windows 10
    2022年03月11日 回复

    支持