能力值:
( LV2,RANK:10 )
|
-
-
2 楼
抠出的不太明白,特别是v5 = *(_DWORD *)&v3[0xFFFFFFFC]; 解释一下也行
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
v3 += 8;
v5 = *(_DWORD *)&v3[0xFFFFFFFC];
这两句一起看啊,
v5 = *(DWORD *)&v3[4];
v3 += 8;
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
[QUOTE=FckTheDog;1431116]v3 += 8;
v5 = *(_DWORD *)&v3[0xFFFFFFFC];
这两句一起看啊,
v5 = *(DWORD *)&v3[4];
v3 += 8;[/QUOTE]
把 0xFFFFFFFC 当成 -4 就好了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这样翻译对吗?
int len=8;
unsigned char *v2[len];
unsigned char *v3[len] = "ABCDEFGH";
for (int i=0;i<len;i++)
{
v2[i] = v3[i+4];
}
|
能力值:
( LV3,RANK:25 )
|
-
-
6 楼
do的下面应该有一个while
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这是另一个版本的F5扣出来的
do
{
v4 = *(_DWORD *)v3;
v3 += 8;
v5 = *((_DWORD *)v3 - 1);
*(_DWORD *)v2 = v4;
*((_DWORD *)v2 + 1) = v5;
v2 += 8;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
是否就是将字符串转换成BYTE数组?
|
能力值:
( LV12,RANK:380 )
|
-
-
9 楼
你把汇编代码贴出来 看看
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你把汇编代码贴出来,或者你缺少一本《C++反汇编与逆向分析技术揭秘》的书
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
IDA 有调试功能,调试一下就知道了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
arm的汇编,没有搭建调试环境
|
能力值:
( LV4,RANK:40 )
|
-
-
13 楼
贴出ARM汇编的代码不就清晰啦
|
能力值:
( LV12,RANK:215 )
|
-
-
14 楼
[QUOTE=rock;1431114]抠出的不太明白,特别是v5 = *(_DWORD *)&v3[0xFFFFFFFC]; 解释一下也行[/QUOTE]
好像就是一个把字符串v3拷贝给到v2的过程。。只不过他分开考了 先ABCD 然后在EFG\0 考过去。然后地址+8继续考后面的
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
char str[] = "ABCDEFG";
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
按DWORD拷贝的话,会不会高低位颠倒?
|
能力值:
( LV12,RANK:215 )
|
-
-
17 楼
不会啊,这跟那个没关系
|
能力值:
( LV3,RANK:30 )
|
-
-
18 楼
while都没有少个条件
|
能力值:
(RANK:10 )
|
-
-
19 楼
你加我qq949119824帮我破解一下,有茶水
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
unsigned __int8 *v2; //v2是个long long型 8个字节的指针 const char *v3; //v3是个char * 指针 int v4; int v5;
v3 = "ABCDEFG"; do { v4 = *(_DWORD *)v3; //把v3强制转为4个字节的整型指针,然后取值赋给v4,V4的值应该是0x44434241 v3 += 8; //V3的值+8, v5 = *(_DWORD *)&v3[0xFFFFFFFC]; // V3的值减4, 同样转换为4字节整型取值给v5, v5的值应该是0x00474645 *(_DWORD *)v2 = v4; //V2也转为4字节整形,在将v4的值赋给v2,则v2指向地址按由低到高依次为 0x41 0x42 0x43 0x44 *((_DWORD *)v2 + 1) = v5; //V2也转为4字节整形然后加1,在将v5的值赋给v2,则v2指向地址按由低到高依次为 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x00 v2 += 8; //V2指向下一个地址。 }
这个程序不考虑其他,只看代码就是一个快速复制内存的程序。因为单个字节的复制没有4个字节的速度快。memcpy等内存复制函数一般也是这么操作。强制指针转成整形进行整型赋值。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
孤山散人
unsigned __int8 *v2; //v2是个long long型 8个字节的指针
const char *v3; ...
非常感谢
|
|
|