逆向脱壳分析基础学习笔记十二 汇编 全局和局部变量

本文为本人在 大神论坛 逆向破解脱壳学习笔记之一,为本人对以往所学的回顾和总结,可能会有谬误之处,欢迎大家指出。

陆续将不断有笔记放出,希望能对想要入门的萌新有所帮助,一起进步

全局变量和局部变量

在提及全局变量和局部变量之前,需要先谈谈程序运行时在内存中的状态

任何一个程序在运行时都会把内存分成如下几块区域:

1.jpg

全局变量

  • 全局变量在程序编译完成后地址就已经确定下来了,只要程序启动,全局变量就已经存在了,启动后里面是否有值取决于声明时是否给定了初始值,如果没有,默认为0
  • 全局变量的值可以被所有函数所修改,里面存储的是最后一次修改的值.
  • 全局变量所占内存会一直存在,直到整个进程结束.
  • 全局变量的反汇编识别:
MOV  寄存器,byte/word/dword ptr ds:[0x12345678]
  • 上面的0x12345678是固定的地址,每次程序启动都不变
    通过寄存器的宽度,或者byte/word/dword 来判断全局变量的宽度
  • 全局变量就是所谓的基址

局部变量

  • 局部变量在程序编译完成后并没有分配固定的地址
  • 在所属的方法没有被调用时,局部变量并不会分配内存地址,只有当所属的程序被调用了,才会在堆栈中分配内存
  • 当局部变量所属的方法执行完毕后,局部变量所占用的内存将变成垃圾数据.局部变量消失
  • 局部变量只能在方法内部使用,函数A无法使用函数B的局部变量
  • 局部变量的反汇编识别
    [ebp-4]
    [ebp-8]
    [ebp-0xC]

例子

#include "stdafx.h"
//全局变量
int global=0x610;
int main(int argc, char* argv[])
{
    //局部变量
        int temp=0x160;

        global=global+temp;

        return 0;
}
2.jpg
4:    #include "stdafx.h"
5:    //全局变量
6:    int global=0x610;
7:    int main(int argc, char* argv[])
8:    {
00401010   push        ebp
00401011   mov         ebp,esp
00401013   sub         esp,44h
00401016   push        ebx
00401017   push        esi
00401018   push        edi
00401019   lea         edi,[ebp-44h]
0040101C   mov         ecx,11h
00401021   mov         eax,0CCCCCCCCh
00401026   rep stos    dword ptr [edi]
9:        //局部变量
10:       int temp=0x160;
00401028   mov         dword ptr [ebp-4],160h
11:
12:       global=global+temp;
0040102F   mov         eax,[global (00428a64)]
00401034   add         eax,dword ptr [ebp-4]
00401037   mov         [global (00428a64)],eax
13:
14:       return 0;
0040103C   xor         eax,eax
15:   }
0040103E   pop         edi
0040103F   pop         esi
00401040   pop         ebx
00401041   mov         esp,ebp
00401043   pop         ebp
00401044   ret

我们可以看到相关代码在这里:

9:        //局部变量
10:       int temp=0x160;
00401028   mov         dword ptr [ebp-4],160h
11:
12:       global=global+temp;
0040102F   mov         eax,[global (00428a64)]
00401034   add         eax,dword ptr [ebp-4]
00401037   mov         [global (00428a64)],eax

我们可以很清楚地看到局部变量是直接保存在[ebp-4]也就是堆栈中的

而全局变量则是保存在一个固定的内存地址00428a64里

同时在断点刚断下的时候,就是还没运行上面的代码时,观察[global (00428a64)]也就是全局变量地址里存储的内容时,可以看到

3.jpg

我们全局变量已经初始化并被赋值了,观察整个main函数的反汇编代码,我们并没有看到全局变量赋值相关的语句,但这并不能说明程序在运行前就已经赋值了,别忘了也有可能是在mainCRTStartup中将这里初始化的,为了印证这一点,我们直接将程序用OD打开,然后会在mainCRTStartup函数执行前断下,以此来验证是否是一打开程序全局变量就已经初始化了

不懂mainCRTStartup的可以去回顾逆向脱壳分析基础学习笔记十 汇编寻找C程序入口

输入之前全局变量的地址,然后查看

4.jpg
5.jpg

可以观察到左下角数据窗口里,我们的全局变量已经初始化了,验证完毕

本系列逆向脱壳基础学习都在下方链接中,欢迎下载并交流沟通

大神论坛 逆向脱壳分析基础学习笔记十二 汇编 全局和局...

版权声明:本文由 lyl610abc 原创,欢迎分享本文,转载请保留出处

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容