能力值:
(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;
}
}
|
能力值:
( LV10,RANK:170 )
|
-
-
3 楼
楼上正确....
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
版主好利害,谢谢你
俺啥时候能像你一样,这神呢
汇编俺已经学了,就是和C联系不到一块,你看俺还应该看点哪方面的书啊
|
能力值:
( LV6,RANK:90 )
|
-
-
5 楼
最初由 一文 发布 版主好利害,谢谢你 俺啥时候能像你一样,这神呢 汇编俺已经学了,就是和C联系不到一块,你看俺还应该看点哪方面的书啊
写完程序用CL /FA xxx.c编译,里面有编译器生成的汇编代码,对比着看
|
能力值:
(RANK:410 )
|
-
-
6 楼
懂得汇编编程和其它语言,只要可以从汇编代码中看懂意思,就可以用其它的语言模仿写出来。
|
能力值:
(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
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 小虾 发布 如下面的汇编代码分析 00402F5C /$ 55 PUSH EBP 00402F5D |. 8BEC MOV EBP,ESP 00402F5F |. 53 PUSH EBX 00402F60 |. 56 PUSH ESI ........
楼上的太强了,PFING
|
能力值:
( LV9,RANK:250 )
|
-
-
9 楼
有点像某个木马中的配置算法.呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
偶有点眼花,还是看众位大侠的吧~
|
能力值:
( LV12,RANK:1130 )
|
-
-
11 楼
最初由 小虾 发布 //就是加密一串字符串之类的函数。 void func(char* lpszChar,int len) { int var1; WORD var2=0xd3ac; ........ 不是打击你积极性,这样当版主很累
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
最初由 baby2008 发布 不是打击你积极性,这样当版主很累
|
能力值:
(RANK:410 )
|
-
-
13 楼
你说的是,不过我平常就是这样,只是这些天我比较清闲而已。
|
能力值:
( LV12,RANK:660 )
|
-
-
14 楼
小虾每次回帖都非常认真, 确实令人佩服.
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
版主的细心、耐心才能使俺们这些菜鸟有所进步啊,谢谢版主
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
最初由 baby2008 发布 不是打击你积极性,这样当版主很累
我先鄙视你一下,别人帮助我们新人,你干吗泼冷水啊???? 翻给你3000个白眼!!!
|
能力值:
( LV12,RANK:1130 )
|
-
-
17 楼
最初由 牧狼 发布 我先鄙视你一下,别人帮助我们新人,你干吗泼冷水啊???? 翻给你3000个白眼!!! 我和小虾很熟,开个玩笑都不行啊
|
能力值:
(RANK:410 )
|
-
-
18 楼
最初由 baby2008 发布 我和小虾很熟,开个玩笑都不行啊
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
恩恩,努力学习中..
目前只懂点汇编, 对8086不是非常熟悉,
部分8086的指令意思还不了解,呵呵,希望大家交流交流,
另外对c基本不是非常熟,还要学习些什么呢, 小虾给指导下...
|
能力值:
(RANK:990 )
|
-
-
20 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
俺也好菜
汇编书基本上看了5遍,还是搞不懂那些地址的图
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
小虾版主,麻烦再给看一下,我想了好几天都没有结果,就这个运算,怎么得出它的逆运算呢。先谢谢大虾了。
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
最初由 小虾 发布 //就是加密一串字符串之类的函数。 void func(char* lpszChar,int len) { int var1; WORD var2=0xd3ac; ........
楼主厉害阿 ,羡慕ing
|
|
|