吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 666|回复: 6
收起左侧

[已解决] 远程注入代码如何添加异常保护?

[复制链接]
king1027 发表于 2024-6-8 17:10
本帖最后由 king1027 于 2024-6-8 17:12 编辑

C++的注入代码已经学会了,大概就是
利用VirtualAllocEx / WriteProcessMemory 将启动函数的代码复制到目标进程
调用CreateRemoteThread (..., 启动函数指针, 参数指针...)来注入远程线程

现在有个问题,因为调用远程CALL给的参数不对或者调用时机不对,有时候可能会导致远程程序崩溃。但我看 @苏紫方璇  大神发布的代码注入工具帖子(https://www.52pojie.cn/thread-963707-1-1.html),工具可以实现SEH保护。我在网上搜了一天,注入代码倒是挺多,跟我这大同小异,但有关如何整合异常保护的代码没有。

所以请问注入的代码如何实现远程异常保护防止程序崩溃?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2024-6-8 19:01
就是在注入的代码中插入seh相关的代码
例如
[Asm] 纯文本查看 复制代码
0040132C >    68 81134000   push x86test.00401381                    ;  构造SEH结构
00401331      64:FF35 00000>push dword ptr fs:[0]
00401338      64:8925 00000>mov dword ptr fs:[0],esp
0040133F      8925 00144000 mov dword ptr ds:[0x401400],esp          ;  保存堆栈指针
00401345      E8 5A000000   call x86test.004013A4                    ;  调用注入的代码


具体可以反汇编我的那个代码注入工具,看他注入了什么数据
 楼主| king1027 发表于 2024-6-8 20:02
本帖最后由 king1027 于 2024-6-8 20:13 编辑
苏紫方璇 发表于 2024-6-8 19:01
就是在注入的代码中插入seh相关的代码
例如
[mw_shl_code=asm,true]0040132C >    68 81134000   push x8 ...

大神,我刚实验了一下,用您的代码注入工具注入记事本,提示远程线程注入失败

1.png


然后我自己新建VS工程,用VC的默认C++ Windows窗口应用程序,设置如图,且关闭safeSEH
2.png

然后注入,程序直接退出了,没有触发SEH



 楼主| king1027 发表于 2024-6-8 20:13
然后我还试了“乐玩编程助手”,他也有个防崩溃模式,但他的就可以成功。我反汇编看他的代码,感觉他没有mov dword ptr fs:[0],esp这个SEH关键代码,不知道他是怎么弄的

[Asm] 纯文本查看 复制代码
05100090     | 9C                | pushfd                                 |
05100091     | 60                | pushad                                 |
05100092     | FF35 04001005     | push dword ptr ds:[0x5100004]          | 05100004:"@0"
05100098     | 68 E80C3700       | push 0x370CE8                          |
0510009D     | C7C0 5029A975     | mov eax,<user32.KillTimer>             |
051000A3     | FFD0              | call eax                               |
051000A5     | 8B05 0C001005     | mov eax,dword ptr ds:[0x510000C]       |
051000AB     | 81F8 00000000     | cmp eax,0x0                            |
051000B1     | 75 22             | jne 0x51000D5                          |
051000B3     | C7C0 01000000     | mov eax,0x1                            |
051000B9     | 8905 0C001005     | mov dword ptr ds:[0x510000C],eax       |
051000BF     | C7C0 EA001005     | mov eax,0x51000EA                      |
051000C5     | FFD0              | call eax                               |
051000C7     | FF35 08001005     | push dword ptr ds:[0x5100008]          | 05100008:L"д"
051000CD     | C7C0 2033D276     | mov eax,<kernel32.SetEvent>            |
051000D3     | FFD0              | call eax                               |
051000D5     | 61                | popad                                  |
051000D6     | 9D                | popfd                                  |
051000D7     | C3                | ret                                    |
051000D8     | 0000              | add byte ptr ds:[eax],al               |
051000DA     | 0000              | add byte ptr ds:[eax],al               |
051000DC     | 0000              | add byte ptr ds:[eax],al               |
051000DE     | 0000              | add byte ptr ds:[eax],al               |
051000E0     | 0000              | add byte ptr ds:[eax],al               |
051000E2     | 0000              | add byte ptr ds:[eax],al               |
051000E4     | 0000              | add byte ptr ds:[eax],al               |
051000E6     | 0000              | add byte ptr ds:[eax],al               |
051000E8     | 0000              | add byte ptr ds:[eax],al               |
051000EA     | 9C                | pushfd                                 |
051000EB     | 60                | pushad                                 |
051000EC     | E8 13FFC9FF       | call 0x4DA0004                         | 注入的汇编代码
051000F1     | 8905 00001005     | mov dword ptr ds:[0x5100000],eax       |
051000F7     | 61                | popad                                  |
051000F8     | 9D                | popfd                                  |
051000F9     | C3                | ret                                    |
苏紫方璇 发表于 2024-6-9 00:43
我这个注入不了64位进程
苏紫方璇 发表于 2024-6-9 00:55
测试了一下,使用定时器似乎可以忽略异常
 楼主| king1027 发表于 2024-6-16 20:37
自己研究出来了 https://www.52pojie.cn/thread-1935098-1-1.html
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表