小菜我 发现了这程序 是启动别的进程 来运行自己指定的代码的`~不是运行整个文件的那种`~
我比较喜欢`~我就用反汇编的办法``把这些能实现这功能的代码 搞到另外的程序上了 `
谁知道 出显了本人还没办法解决的小错误`~~进程是插上了 `
但就是没运行自己的指定代码`~~
希望老鸟有空帮解决下`~~
==============
实现插进程的代码
131411C0 > 51 push ecx
131411C1 53 push ebx
131411C2 56 push esi
131411C3 57 push edi
131411C4 6A 00 push 0
131411C6 FF15 30101413 call dword ptr ds:[<&KERNEL32.GetModule>; kernel32.GetModuleHandleA
131411CC 8BF0 mov esi,eax
131411CE 6A 00 push 0
131411D0 68 88121413 push 原程序.13141288
131411D5 68 88121413 push 原程序.13141288
131411DA 8B46 3C mov eax,dword ptr ds:[esi+3C]
131411DD 68 A8101413 push 原程序.131410A8 ; ASCII "IEXPLORE.EXE"
131411E2 68 54101413 push 原程序.13141054 ; ASCII "open"
131411E7 6A 00 push 0
131411E9 8B5C30 50 mov ebx,dword ptr ds:[eax+esi+50]
131411ED FF15 38101413 call dword ptr ds:[<&SHELL32.ShellExecu>; SHELL32.ShellExecuteA
131411F3 68 B80B0000 push 0BB8
131411F8 FF15 2C101413 call dword ptr ds:[<&KERNEL32.Sleep>] ; kernel32.Sleep
131411FE 8D4C24 0C lea ecx,dword ptr ss:[esp+C]
13141202 51 push ecx
13141203 6A 00 push 0
13141205 68 A0101413 push 原程序.131410A0 ; ASCII "IEFrame"
1314120A FF15 40101413 call dword ptr ds:[<&USER32.FindWindowA>; USER32.FindWindowA
13141210 50 push eax
13141211 FF15 44101413 call dword ptr ds:[<&USER32.GetWindowTh>; USER32.GetWindowThreadProcessId
13141217 8B5424 0C mov edx,dword ptr ss:[esp+C]
1314121B 52 push edx
1314121C 6A 00 push 0
1314121E 68 FF0F1F00 push 1F0FFF
13141223 FF15 28101413 call dword ptr ds:[<&KERNEL32.OpenProce>; kernel32.OpenProcess
13141229 68 00800000 push 8000
1314122E 8BF8 mov edi,eax
13141230 6A 00 push 0
13141232 56 push esi
13141233 57 push edi
13141234 FF15 24101413 call dword ptr ds:[<&KERNEL32.VirtualFr>; kernel32.VirtualFreeEx
1314123A 6A 40 push 40
1314123C 68 00300000 push 3000
13141241 53 push ebx
13141242 56 push esi
13141243 57 push edi
13141244 FF15 20101413 call dword ptr ds:[<&KERNEL32.VirtualAl>; kernel32.VirtualAllocEx
1314124A 6A 00 push 0
1314124C 53 push ebx
1314124D 56 push esi
1314124E 50 push eax
1314124F 57 push edi
13141250 FF15 1C101413 call dword ptr ds:[<&KERNEL32.WriteProc>; kernel32.WriteProcessMemory
13141256 6A 00 push 0
13141258 6A 00 push 0
1314125A 56 push esi
1314125B 68 D5101413 push 原程序.131410D5
13141260 6A 00 push 0
13141262 6A 00 push 0
13141264 57 push edi
13141265 FF15 18101413 call dword ptr ds:[<&KERNEL32.CreateRem>; kernel32.CreateRemoteThread
================
1314125B 68 D5101413 push 原程序.131410D5
131410D5这地址 就是我们开始指定的代码
===================================================
==================]
以下是我碰到的估计是导致我不成功的问题`~~
============
估计出错位置 WriteProcessMemory运行到这函数断点 可看到以下
0012FFA0 00000118 |hProcess = 00000118 (window)
0012FFA4 00000000 |Address = 0
0012FFA8 00400000 |Buffer = 注册表学.00400000
0012FFAC 0013E000 |BytesToWrite = 13E000 (1302528.)
0012FFB0 00000000 \pBytesWritten = NULL
0012FFB4 7C930228 ntdll.7C930228
0012FFA4 00000000 |Address = 0 这地址未压 00400000
======================================================================================================
===========================================================================================================
原程序.EXE
1314123A 6A 40 push 40
1314123C 68 00300000 push 3000
13141241 53 push ebx
13141242 56 push esi
13141243 57 push edi
13141244 FF15 20101413 call dword ptr ds:[<&KERNEL32.VirtualAl>; kernel32.VirtualAllocEx
1314123C 68 00300000 push 3000 估计这是压文件的大小数据``~ 可改成 push ebx
如果 要调试的程序.EXE 应该以可改成 push ebx
---------------------------
WriteProcessMemory运行到这函数断点 可看到以下
0012FFA0 0000012C |hProcess = 0000012C
0012FFA4 13140000 |Address = 13140000
0012FFA8 13140000 |Buffer = 原程序.13140000
0012FFAC 00002000 |BytesToWrite = 2000 (8192.)
0012FFB0 00000000 \pBytesWritten = NULL
==============
1314125B 68 D5101413 push 原程序.131410D5
131410D5这地址 就是我们指定运行代码的位置开始~~~~
本人采 估计就是 以上位置出错~~~
望高手帮解决一下`~~~~
要调试的那个程序 如果没出错了 ~~
他会用IEXPLORE.EXE进程 运行c:\1.exe
望高手帮我解决下`~~`
由于我的权限小 上传不了附件 我就给个下载地址
http://ys-g.ys168.com/?插进程运行代码.rar_50chs0b8e1e2bkis0bsnn0btmn0cpqnom5bp0btm4bs2bku14z97f14z
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)