首页
论坛
课程
招聘
[分享]C语言逆向小笔记[错误修正]
2011-2-27 23:50 6939

[分享]C语言逆向小笔记[错误修正]

2011-2-27 23:50
6939
今天晚上做的,文字就不写了,没什么技术含量,免得被人拍砖,源代码和反汇编代码附上
lea     ebx, [esp+38h+var_28]  
lea     edi, [esp+38h+var_20]   这两处应该是ESP+38代表了一个堆栈地址,+28H应该是代表了这个地址的起始大小,下面那个add     ebx, 2   和add     edi, 8是它们的内容+2和 +8
这两个寄存器里面存放的是Address,所以是地址+2和+8
// C语言数组.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define size 4
int main(int argc, char* argv[])
{
short date[size]; //definition one short type Array
short *ptr; //definition one short type pointer
short index;
double bills[size];
double *ptf;
ptr=date;
ptf=bills;
printf("%23s %10s\n","short","double");
for(index=0;index<size;index++)
printf("pointer +%d: %10p %10p\n",index,ptr+index,ptf+index);
return 0;
}


反汇编代码
.text:00401000 83 EC 28          sub     esp, 28h                        ; ESP=128,ESP-28=100
.text:00401003 53                push    ebx                             ; ESP-4,100-4=96
.text:00401004 55                push    ebp                             ; ESP-8,100-8=92
.text:00401005 56                push    esi                             ; ESP-C,100-C=88
.text:00401006 57                push    edi                             ; ESP-F,100-F=84
.text:00401007 68 5C 70 40 00    push    offset aDouble                  ; "double"
.text:0040100C 68 54 70 40 00    push    offset aShort                   ; "short"
.text:00401011 68 48 70 40 00    push    offset a23s10s                  ; "%23s %10s\n"
.text:00401016 E8 45 00 00 00    call    printf
.text:0040101B 83 C4 0C          add     esp, 0Ch                        ; renew wareroom,72+12=84,now wareroom originate address be EDI pointer of address
.text:0040101E 33 F6             xor     esi, esi                        ; esi zero
.text:00401020 8D 5C 24 10       lea     ebx, [esp+38h+var_28]           ; Load ESP+38h+28,This We Can Conceive Is Load ESP+38 of Store Address,at+28 Of Offset Address
.text:00401024 8D 7C 24 18       lea     edi, [esp+38h+var_20]           ; Load ESP+38H+20,This Me Can Conceive Is Load ESP+38 Of AnotherSide Address,Endure Look Next
.text:00401028 BD 04 00 00 00    mov     ebp, 4                          ; EBP Load Constant 4
.text:0040102D
.text:0040102D                   loc_40102D:                             ; CODE XREF: _main+45j
.text:0040102D 57                push    edi                             ; EDI Enter Corral ESP-4,84-4=80
.text:0040102E 53                push    ebx                             ; EBX Enter Corral ESP-8, 84-8=76
.text:0040102F 56                push    esi                             ; ESI Enter Corral ESP-C,84-C=72
.text:00401030 68 30 70 40 00    push    offset aPointerD10p10p          ; "pointer +%d: %10p %10p\n"
.text:00401035 E8 26 00 00 00    call    printf                          ; CALL Printf Function
.text:0040103A 83 C4 10          add     esp, 10h                        ; Resume Corral
.text:0040103D 46                inc     esi                             ; Inc ESI ESI Now Is ESI+1
.text:0040103E 83 C7 08          add     edi, 8                          ; Just Is Use Lea Load Into EDI Address,Add EDI+8 Equal EDI Address+8
.text:00401041 83 C3 02          add     ebx, 2                          ; Ditto
.text:00401044 4D                dec     ebp                             ; Ebp-1
.text:00401045 75 E6             jnz     short loc_40102D                ; Unknown Not Learned How This
.text:00401047 5F                pop     edi
.text:00401048 5E                pop     esi
.text:00401049 5D                pop     ebp

《0day安全 软件漏洞分析技术(第二版)》第三次再版印刷预售开始!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 217
活跃值: 活跃值 (11)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
foxabu 活跃值 13 2011-2-28 05:00
2
0
看起来不是GCC的编译器风格。
雪    币: 39
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
dwboy 活跃值 2011-2-28 09:01
3
0
为神马汇编里面的注释我一句也读不懂
雪    币: 217
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
爱鸟 活跃值 1 2011-2-28 15:22
4
0
[QUOTE=邓韬;930414]今天晚上做的,文字就不写了,没什么技术含量,免得被人拍砖,源代码和反汇编代码附上
lea     ebx, [esp+38h+var_28]  
lea     edi, [esp+38h+var_20]   这两处应该是ESP+38代表了一个堆栈地址,+28H应该是代表了这个地址的起始大小,...[/QUOTE]

建议用中文注释 不是英文注释不好 而且中国人用英文是一个人一个用法 根本没法畅通的交流
雪    币: 49
活跃值: 活跃值 (14)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2011-2-28 18:14
5
0
谢谢指点,知道了,本来想练习哈自己的英文阅读能力的
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
laohai 活跃值 2011-2-28 19:35
6
0
感谢你的交流
雪    币: 1475
活跃值: 活跃值 (21)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2011-2-28 20:24
7
0
lea     edi, [esp+38h+var_20]

它的作用是这样的:

edi = esp+38h+var_20
雪    币: 49
活跃值: 活跃值 (14)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2011-3-1 18:25
8
0
谢谢楼上大牛启发
雪    币: 217
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
爱鸟 活跃值 1 2011-3-12 23:52
9
0
[QUOTE=cntrump;930768]lea     edi, [esp+38h+var_20]

它的作用是这样的:

edi = esp+38h+var_20[/QUOTE]

常用的优化 天书夜读还是哪本书上说过
雪    币: 413
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
孟贤 活跃值 2011-4-17 20:06
10
0
Reversing:Secrets of Reverse Engineering
游客
登录 | 注册 方可回帖
返回