小南跑 发表于 2023-9-12 09:33

老师早上好,这种题怎么解?



事情是这样的:

一个E程序,双击启动它就是进程A,然后会提醒用户登录或者注册。

这个时候进程A 会创建 进程B,并且把验证代码,随机加载在进程B的某段内存空间。

我画的示意图如下:



一开始我想写drv补丁,随着进程A创建,然后劫持它。

但是发现根本行不通,因为关键的验证代码是在进程B里边。

然后我想能不能劫持进程B,但是由于它是动态加载,我找不到内存加载的基地址。

求助大佬这种题,该怎么来攻与防呀?

为了避免求破,源程序就不发了。

小南跑 发表于 2023-9-12 11:33

_Bitter 发表于 2023-9-12 11:25
写一个DLL 注入到B里面。

感谢老师指点,DLL注入我会,问题是您怎么能定位到进程B里边,那段随机加载的基地址呢?

小南跑 发表于 2023-9-18 13:42

666888tzq 发表于 2023-9-17 11:15
A只是一个加载器而已,你要补丁的是b,在补丁里对模块b打补丁就行了。随机地址就用基址+偏移就可以了。

谢谢老师的指点,进程A似乎是随机在进程B里边申请基址,然后各种PE拉伸,等进程B启动起来后,其实所有的验证代码都已加载好了。

这样进程B其实是被无模块注入,我能想到的办法就是分析进程A然后得到进程B的加载基址,然后才能加上偏移获取函数地址。就算写dll也得有这个关键基址的吧

无闻无问 发表于 2023-9-12 11:08

即时调试应该可以搞定……

_Bitter 发表于 2023-9-12 11:25

写一个DLL 注入到B里面。

小南跑 发表于 2023-9-12 11:39

无闻无问 发表于 2023-9-12 11:08
即时调试应该可以搞定……

附加调试在调试阶段是可行的,但不能每次用调试器修改完再使用软件吧。



15126819695 发表于 2023-9-12 11:47

随机加载的基地址可以算,首先先计算便宜,利用你想处理的地址减去模块首地址获得偏移,然后利用易语言模块获取进程B的模块地址,再加上偏移就可以计算和定位他的动态地址了。

无闻无问 发表于 2023-9-12 13:50

你得逆啊,逆出它如何启动,传递了什么参数或数据……

_Bitter 发表于 2023-9-12 14:50

小南跑 发表于 2023-9-12 11:33
感谢老师指点,DLL注入我会,问题是您怎么能定位到进程B里边,那段随机加载的基地址呢?

取基址 算偏移定位。或者取特征算偏移

acs 发表于 2023-9-12 14:52

逆向思维用起来呀

影风 发表于 2023-9-13 15:12

啥程序 啥验证 山寨封包试试看
页: [1] 2
查看完整版本: 老师早上好,这种题怎么解?