首页
社区
课程
招聘
帮忙看一下这段代码是什么意思?俺很菜
发表于: 2006-5-10 23:52 6658

帮忙看一下这段代码是什么意思?俺很菜

2006-5-10 23:52
6658
00402F5C  /$  55            PUSH EBP
00402F5D  |.  8BEC          MOV EBP,ESP
00402F5F  |.  53            PUSH EBX
00402F60  |.  56            PUSH ESI
00402F61  |.  66:BA ACD3    MOV DX,0D3AC
00402F65  |.  33F6          XOR ESI,ESI
00402F67  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
00402F6A  |.  EB 24         JMP SHORT LHB.00402F90
00402F6C  |>  0FB7DA        /MOVZX EBX,DX
00402F6F  |.  0FB7D2        |MOVZX EDX,DX
00402F72  |.  C1FB 08       |SAR EBX,8                              
00402F75  |.  8A08          |MOV CL,BYTE PTR DS:[EAX]
00402F77  |.  32D9          |XOR BL,CL
00402F79  |.  81E1 FF000000 |AND ECX,0FF
00402F7F  |.  03CA          |ADD ECX,EDX
00402F81  |.  8818          |MOV BYTE PTR DS:[EAX],BL
00402F83  |.  69D1 6DCE0000 |IMUL EDX,ECX,0CE6D                     
00402F89  |.  66:81C2 BF58  |ADD DX,58BF
00402F8E  |.  46            |INC ESI
00402F8F  |.  40            |INC EAX
00402F90  |>  0FB7CE         MOVZX ECX,SI
00402F93  |.  3B4D 0C       |CMP ECX,DWORD PTR SS:[EBP+C]
00402F96  |.^ 7C D4         \JL SHORT LHB.00402F6C
00402F98  |.  5E            POP ESI
00402F99  |.  5B            POP EBX
00402F9A  |.  5D            POP EBP
00402F9B  \.  C3            RETN

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
//就是加密一串字符串之类的函数。
void func(char* lpszChar,int len)
{
    int var1;
    WORD var2=0xd3ac;
    for (int i=0; i<=len; i++)
    {
        var1 = (var2 >> 8) ^ lpszChar[i];
        var2 =  (lpszChar[i] + var2) * 0xce6d + 0x58bf;
        lpszChar[i] = (char)var1;
    }
}
2006-5-11 00:09
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
3
楼上正确....
2006-5-11 00:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
版主好利害,谢谢你
俺啥时候能像你一样,这神呢
汇编俺已经学了,就是和C联系不到一块,你看俺还应该看点哪方面的书啊
2006-5-11 10:33
0
雪    币: 22
活跃值: (425)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
最初由 一文 发布
版主好利害,谢谢你
俺啥时候能像你一样,这神呢
汇编俺已经学了,就是和C联系不到一块,你看俺还应该看点哪方面的书啊

写完程序用CL /FA xxx.c编译,里面有编译器生成的汇编代码,对比着看
2006-5-11 11:03
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
懂得汇编编程和其它语言,只要可以从汇编代码中看懂意思,就可以用其它的语言模仿写出来。
2006-5-11 11:28
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
7
如下面的汇编代码分析
00402F5C  /$  55            PUSH EBP
00402F5D  |.  8BEC          MOV EBP,ESP
00402F5F  |.  53            PUSH EBX
00402F60  |.  56            PUSH ESI
00402F61  |.  66:BA ACD3    MOV DX,0D3AC  //0xD3AC是一个常数
00402F65  |.  33F6          XOR ESI,ESI
00402F67  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8] //取出该函数的第一个参数。
00402F6A  |.  EB 24         JMP SHORT LHB.00402F90
00402F6C  |>  0FB7DA        /MOVZX EBX,DX //将常数0xD3AC传给EBX
00402F6F  |.  0FB7D2        |MOVZX EDX,DX //转换为WORD类型整数
00402F72  |.  C1FB 08       |SAR EBX,8  //EBX 左移 8位
00402F75  |.  8A08          |MOV CL,BYTE PTR DS:[EAX] //EAX指向函数第一个参数,看该操作可以知道这个参数是一个数组或指向一个缓冲区之类的参数,Cl取得该参数的第一个数据
00402F77  |.  32D9          |XOR BL,CL  //进行Byte字节的异或运算
00402F79  |.  81E1 FF000000 |AND ECX,0FF //转为Byte字节
00402F7F  |.  03CA          |ADD ECX,EDX //加上保存在EDX中的常数
00402F81  |.  8818          |MOV BYTE PTR DS:[EAX],BL //再将这个结果保存到原缓冲区中。
00402F83  |.  69D1 6DCE0000 |IMUL EDX,ECX,0CE6D //缓冲区的数据乘以0xCE6D的结果传给EDX
00402F89  |.  66:81C2 BF58  |ADD DX,58BF //再将这个结果加上0x58BF,此时原常数0xD3AC已经给新的数替换了进行下一次的运算。
00402F8E  |.  46            |INC ESI //循环变量 i++
00402F8F  |.  40            |INC EAX //缓冲区指针++
00402F90  |>  0FB7CE         MOVZX ECX,SI
00402F93  |.  3B4D 0C       |CMP ECX,DWORD PTR SS:[EBP+C]
00402F96  |.^ 7C D4         \JL SHORT LHB.00402F6C
00402F98  |.  5E            POP ESI
00402F99  |.  5B            POP EBX
00402F9A  |.  5D            POP EBP
00402F9B  \.  C3            RETN
2006-5-11 11:39
0
雪    币: 241
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 小虾 发布
如下面的汇编代码分析
00402F5C /$ 55 PUSH EBP
00402F5D |. 8BEC MOV EBP,ESP
00402F5F |. 53 PUSH EBX
00402F60 |. 56 PUSH ESI
........

楼上的太强了,PFING
2006-5-11 11:55
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
有点像某个木马中的配置算法.呵呵
2006-5-11 12:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
偶有点眼花,还是看众位大侠的吧~
2006-5-11 17:19
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
11
最初由 小虾 发布
//就是加密一串字符串之类的函数。
void func(char* lpszChar,int len)
{
int var1;
WORD var2=0xd3ac;
........


不是打击你积极性,这样当版主很累
2006-5-11 18:09
0
雪    币: 153
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 baby2008 发布
不是打击你积极性,这样当版主很累

2006-5-11 18:11
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
13
你说的是,不过我平常就是这样,只是这些天我比较清闲而已。
2006-5-11 18:28
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
14
小虾每次回帖都非常认真, 确实令人佩服.
2006-5-11 19:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
版主的细心、耐心才能使俺们这些菜鸟有所进步啊,谢谢版主
2006-5-12 01:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 baby2008 发布
不是打击你积极性,这样当版主很累


我先鄙视你一下,别人帮助我们新人,你干吗泼冷水啊???? 翻给你3000个白眼!!!
2006-5-12 08:46
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
17
最初由 牧狼 发布
我先鄙视你一下,别人帮助我们新人,你干吗泼冷水啊???? 翻给你3000个白眼!!!


我和小虾很熟,开个玩笑都不行啊
2006-5-12 09:17
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
18
最初由 baby2008 发布
我和小虾很熟,开个玩笑都不行啊

2006-5-12 09:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
恩恩,努力学习中..

目前只懂点汇编, 对8086不是非常熟悉,

部分8086的指令意思还不了解,呵呵,希望大家交流交流,

另外对c基本不是非常熟,还要学习些什么呢, 小虾给指导下...
2006-5-12 16:58
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
20
最初由 牧狼 发布
我先鄙视你一下,别人帮助我们新人,你干吗泼冷水啊???? 翻给你3000个白眼!!!

哈哈,笑死我了。某人受到打击了。
2006-5-12 17:05
0
雪    币: 241
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
俺也好菜
汇编书基本上看了5遍,还是搞不懂那些地址的图
2006-5-13 00:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
小虾版主,麻烦再给看一下,我想了好几天都没有结果,就这个运算,怎么得出它的逆运算呢。先谢谢大虾了。
2006-5-17 02:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
最初由 小虾 发布
//就是加密一串字符串之类的函数。
void func(char* lpszChar,int len)
{
int var1;
WORD var2=0xd3ac;
........

楼主厉害阿 ,羡慕ing
2006-5-18 01:59
0
游客
登录 | 注册 方可回帖
返回
//