wine分析
文章平均质量分 61
chrisnotfound
这个作者很懒,什么都没留下…
展开
-
Wine中PE格式文件的加载(一):Wine初始化过程
首先了解下Wine初始化过程。我们执行”wine WeChat.exe”命令,发生的过程是怎么样的?接下来从wine源码一步步分析函数调用过程。在loader/目录下的源码编译,由main.c生成了“wine”Linux可执行文件;preloader.c生成了“pre-loader”Linux可执行文件。假设在终端通过命令“wine WeChat.exe”启动微信;该过程涉及preloader,...原创 2018-04-16 10:38:59 · 3105 阅读 · 0 评论 -
Wine中PE格式文件的加载(二):Wineserver初始化过程
Wineserver的初始化过程就在thread_init函数中进行的。具体分析thread_init函数(在ntdll/thread.c中)1. 创建了TEB,PEB等数据结构。2. 通过server_init_process()与服务进程建立socket连接。在此过程中,如果连接失败就说明服务进程尚不存在,此时要通过start_server()先fork()一个子进程,让其执行...原创 2018-04-16 10:41:04 · 1768 阅读 · 0 评论 -
Wine中PE格式文件的加载(三):PE格式文件的加载
前面分析到ntdll中加载了kernel32,然后调用了kernel32的初始化函数__wine_kernel_init。该函数的实现在dlls/kernel32/process.c中。内容较多,就不完整截图了首先函数开始获取了需要加载的windows应用的路径名,这个就是在开始执行的命令的微信的绝对路径,在wine中一般为“/home/username/.wine/drive_c/Program...原创 2018-04-16 10:46:16 · 1269 阅读 · 0 评论 -
Wine中PE格式文件的加载(四):DLL的装入和连接
在加载完PE可执行文件后,回到kernel32的入口函数__wine_kernel_init中,接下来调用了函数LdrInitializeThunk。dll的装入和连接过程主要是该函数实现的。函数部分代码如下图所示: 先用main_exe_file判断主模块是否已经被建立了,这是在wine_process_init函数中被赋值的一个句柄类型。get_moderf的作用正如注释所说,是为可执行文件分...原创 2018-05-04 15:03:32 · 2137 阅读 · 0 评论