首页
社区
课程
招聘
请求下米那一段不长代码的运算法则
发表于: 2005-12-13 05:08 3398

请求下米那一段不长代码的运算法则

2005-12-13 05:08
3398
他将自身机器码(9位)一位换算一次ASCII码  在以下代码做一次计算
直到把9次换算并把9次循环做完
0063F0F9  |> /8B1D 10206600 /mov ebx,dword ptr ds:[662010]
0063F0FF  |. |031E          |add ebx,dword ptr ds:[esi]
0063F101  |. |0FAFD8        |imul ebx,eax
0063F104  |. |8B4D FC       |mov ecx,dword ptr ss:[ebp-4]
0063F107  |. |0FB64C01 FF   |movzx ecx,byte ptr ds:[ecx+eax-1]
0063F10C  |. |0FAFD9        |imul ebx,ecx
0063F10F  |. |015D F4       |add dword ptr ss:[ebp-C],ebx
0063F112  |. |8B1D 14206600 |mov ebx,dword ptr ds:[662014]
0063F118  |. |031E          |add ebx,dword ptr ds:[esi]
0063F11A  |. |0FAFD8        |imul ebx,eax
0063F11D  |. |8B7D FC       |mov edi,dword ptr ss:[ebp-4]
0063F120  |. |0FAFD9        |imul ebx,ecx
0063F123  |. |015D F0       |add dword ptr ss:[ebp-10],ebx
0063F126  |. |40            |inc eax
0063F127  |. |4A            |dec edx
0063F128  |.^\75 CF         \jnz short Phl.0063F0F9

但不知道在这里是怎么运算的 请给予帮助

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2384
活跃值: (771)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
/*经过上面的分析,可以判断如下:
662010保存的可能是一个2维数的ULONG数组或一个两个ULONG成员的结构的全局变量(你没什么说明我只能这样猜了)
esi中保存的可能是一个ULONG变量
ebp-4中保存的可能是一个指针,指向你所说的机器码的ASCII码。
eax应是一指针++。
edx就机器码字符的长度。
ebx是一个临时变量
[ebp-10]和[ebp-0xC]是两个局部ULONG变量。
edi没用,这里就省略他。
经过上面的分析,可以写函数如下:*/
void function (char Code[],ULONG CodeLen)
{
    ULONG var_1,var_2,var_3,var_tmp,i,arr_1[1];
    //下面这些值是随便取的。没其它意思,因为你没说出这个变量的值,我只能随机取一个值了。
    arr_1[0] = 0x100;
    arr_1[1] = 0x200;
    var_1 = 0x300;
    var_2 = 0x400;
    var_tmp = 0;
    for (i = 1; i <= CodeLen+1;i++)
    {
        var_tmp = arr_1[0];
        var_tmp = ((var_tmp + var_1) * i) * Code[i-1];
        var_2 += var_tmp;
        var_tmp = arr_1[1];
        var_tmp = ((var_tmp + var_1) * i) * Code[i-1];
        var_3 += var_tmp;
    }
}
2005-12-13 12:16
0
游客
登录 | 注册 方可回帖
返回