首页
社区
课程
招聘
[原创]64位CreateProcess逆向:(一)3环下的各参数效验、整合以及0环返回后的检查
发表于: 2016-1-26 11:35 23812

[原创]64位CreateProcess逆向:(一)3环下的各参数效验、整合以及0环返回后的检查

2016-1-26 11:35
23812

点击下面进入总目录:
64位Windows创建64位进程逆向分析(总目录)

    这是科锐逆向64位CreateProcess函数的第1篇。作为整个篇章的开始,我们先要谈谈CreateProcess应该做什么,逆向它的意义在哪。
    按MSDN的定义:
        CreateProcess函数,将创造一个进程以及它的主线程,这个新进程会执行指定的可执行文件。
    其中“进程”、“可执行文件”是重点,一般说来,进程是内存中的数据,而可执行文件(狭义地讲)就是Windows存放在磁盘中的PE文件。
    所以,CreateProcess之所以重要,是因为它起码做了两件大事:
        1.将磁盘中的数据,(按一定格式)加载到内存中去
        2.让内存中的数据运行起来
    研究CreateProcess这个API,对于理解PE、Windows进程、线程管理都会有很大帮助。

    在此系列的第1篇中,我们会一起梳理下整个CreateProcess整体的流程,让大家有一个整体认识。

CreateProcessInternal
    进入CreateProcess的入口可以发现,微软为了保持结构改动的灵活性,多封装了一层CreateProcessInernal,CreateProcess基本上没做多余的工作。而是直接调用CreateProcessInternalA并将CreateProcessInternalA返回值作为结果返回。
    唯一多做了一点事情,就是在传递参数的过程中,多传了两个(均为0的)参数,这应该是设计上防止未来变动而保留的灵活性。

    因此,我们真正的起点,应该是从CreateProcessInternal开始的。
    它的函数原型如下:

BOOL WINAPI CreateProcessInternalW(HANDLE hToken,
                       LPCWSTR lpApplicationName,
                       LPWSTR lpCommandLine,
                       LPSECURITY_ATTRIBUTES lpProcessAttributes,
                       LPSECURITY_ATTRIBUTES lpThreadAttributes,
                       BOOL bInheritHandles,
                       DWORD dwCreationFlags,
                       LPVOID lpEnvironment,
                       LPCWSTR lpCurrentDirectory,
                       LPSTARTUPINFOW lpStartupInfo,
                       LPPROCESS_INFORMATION lpProcessInformation,
                       PHANDLE hNewToken);
PRTL_USER_PROCESS_PARAMETERS __fastcall BasepCreateProcessParameters(
                        LPCWSTR    DosFileName,
                        LPCWSTR    FileName.Buffer, 
                        LPCWSTR    lpCurrentDirectory,       //GetFullPathName获取到的CurrentDirectory
                        LPCWSTR    CommandLine, 
                        LPVOID    lpEnvironment, 
                        LPSTARTUPINFOEX  lpStartupInfo, 
                        DWORD    dwCreationFlags, 
                        BOOL    bInheritHandles 
                        )

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

上传的附件:
收藏
免费 9
支持
分享
最新回复 (27)
雪    币: 300
活跃值: (2452)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark
2016-1-26 11:44
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
精前留名,
非常喜欢这种做学问的方式,知其所以然。
希望可以做一份PDF存档~
2016-1-26 12:16
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
风格不错,内容详细清楚~ 另外问下楼主的流程图用什么画的
2016-1-26 12:25
0
雪    币: 3092
活跃值: (1719)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
微软自家的vivso,用起来还是蛮方便的
2016-1-26 13:25
0
雪    币: 3092
活跃值: (1719)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
微软自家的vivso,画流程图感觉还是蛮方便的
2016-1-26 13:26
0
雪    币: 3092
活跃值: (1719)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
pdf格式已上传,就是后面图太大,网页上看起来好点,doc和pdf看着都不太方便
2016-1-26 16:14
0
雪    币: 47147
活跃值: (20420)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
帖图的方法不对,参考这帖:http://bbs.pediy.com/showpost.php?postid=292659
2016-1-26 16:17
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
居然不是放在尾部~
2016-1-26 17:40
0
雪    币: 129
活跃值: (333)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xed
10
过来学习了。期待r0的分析
2016-1-26 19:04
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
3环...ring3为何不是环3
2016-1-26 19:38
0
雪    币: 3092
活跃值: (1719)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
谢谢老大提醒,已修正
2016-1-26 22:47
0
雪    币: 15936
活跃值: (4137)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感谢分享,收藏了
2016-1-26 23:50
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
14
排版不错... support
2016-1-27 00:45
0
雪    币: 99
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark
2016-1-27 01:26
0
雪    币: 16468
活跃值: (2493)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
16
科锐也开始放大招了。不错,mark。流程图要给个赞
2016-1-27 09:34
0
雪    币: 43
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
Mark这个系列
2016-1-27 15:56
0
雪    币: 14
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
活捉 老钱徒弟。。。
2016-1-27 22:39
0
雪    币: 284
活跃值: (250)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
19
奈斯,写的太好了
2016-1-27 23:48
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
感谢分享!努力学习!
2016-2-2 21:10
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
; )
当年第三阶段的项目我也分析过64位的,但是没形成文档,自己对比了一下跟32位的区别就完事了
2016-2-5 12:41
0
雪    币: 14
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
学习了...
2016-2-16 11:55
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
mark  期待下一篇
2016-2-19 11:38
0
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
24
好多大牛啊! 感谢!
2016-4-21 09:34
0
雪    币: 244
活跃值: (174)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
好文,谢谢
2019-1-10 14:48
0
游客
登录 | 注册 方可回帖
返回
//