首页
社区
课程
招聘
[旧帖] 求助!反汇编 实现插进程运行指定代码 0.00雪花
发表于: 2010-2-5 22:14 3240

[旧帖] 求助!反汇编 实现插进程运行指定代码 0.00雪花

2010-2-5 22:14
3240
小菜我 发现了这程序 是启动别的进程 来运行自己指定的代码的`~不是运行整个文件的那种`~
我比较喜欢`~我就用反汇编的办法``把这些能实现这功能的代码 搞到另外的程序上了 `
谁知道 出显了本人还没办法解决的小错误`~~进程是插上了 `
但就是没运行自己的指定代码`~~
希望老鸟有空帮解决下`~~

==============
实现插进程的代码
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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
文件连接已失效!
2010-2-6 09:37
0
游客
登录 | 注册 方可回帖
返回
//