; 汇编代码的功能是对一个数组进行异或运算 ; 参数传入的数组地址存储在ebp+arg_0中 ; 数组长度为20h(32个元素) ; 初始化变量var_4为0 .text:00D01560 var_4 = dword ptr -4 .text:00D01560 arg_0 = dword ptr 8 .text:00D01560 .text:00D01560 000 push ebp .text:00D01561 004 mov ebp, esp .text:00D01563 004 push ecx .text:00D01564 008 mov [ebp+var_4], 0 .text:00D0156B 008 jmp short use_up_xor_data .text:00D0156D ; --------------------------------------------------------------------------- .text:00D0156D .text:00D0156D loc_D0156D: ; CODE XREF: use_use_up_xor_data+38↓j .text:00D0156D 008 mov eax, [ebp+var_4] .text:00D01570 008 add eax, 1 .text:00D01573 008 mov [ebp+var_4], eax .text:00D01576 .text:00D01576 use_up_xor_data: ; CODE XREF: use_use_up_xor_data+B↑j .text:00D01576 008 cmp [ebp+var_4], 14h .text:00D0157A 008 jge short up_xor_data .text:00D0157C 008 mov ecx, [ebp+var_4] .text:00D0157F 008 add ecx, 1 .text:00D01582 008 imul ecx, [ebp+var_4] .text:00D01586 008 mov edx, [ebp+var_4] .text:00D01589 008 mov eax, [ebp+arg_0] .text:00D0158C 008 xor ecx, [eax+edx4] .text:00D0158F 008 mov edx, [ebp+var_4] .text:00D01592 008 mov eax, [ebp+arg_0] .text:00D01595 008 mov [eax+edx4], ecx .text:00D01598 008 jmp short loc_D0156D .text:00D0159A ; --------------------------------------------------------------------------- .text:00D0159A .text:00D0159A up_xor_data: ; CODE XREF: use_use_up_xor_data+1A↑j .text:00D0159A 008 mov ecx, [ebp+arg_0] .text:00D0159D 008 mov xor_data, ecx .text:00D015A3 008 mov eax, offset next_xor_data .text:00D015A8 008 mov dword_D04470, eax .text:00D015AD 008 jmp short loc_D015F5 .text:00D015AF ; --------------------------------------------------------------------------- .text:00D015AF .text:00D015AF next_xor_data: ; DATA XREF: use_use_up_xor_data+43↑o .text:00D015AF 000 mov i, 0 .text:00D015B9 000 jmp short loc_D015CA .text:00D015BB ; --------------------------------------------------------------------------- .text:00D015BB .text:00D015BB loc_D015BB: ; CODE XREF: use_use_up_xor_data+92↓j .text:00D015BB 000 mov edx, i .text:00D015C1 000 add edx, 1 .text:00D015C4 000 mov i, edx .text:00D015CA .text:00D015CA loc_D015CA: ; CODE XREF: use_use_up_xor_data+59↑j .text:00D015CA 000 cmp i, 40 .text:00D015D1 000 jge short locret_D015F4 .text:00D015D3 000 mov eax, i .text:00D015D8 000 mov ecx, keydata[eax4] .text:00D015DF 000 sub ecx, i .text:00D015E5 000 mov edx, i .text:00D015EB 000 mov keydata[edx4], ecx .text:00D015F2 000 jmp short loc_D015BB ; 进入循环,循环条件为var_4小于20h ; 将var_4加1 ; 将数组中的第var_4个元素与var_4进行异或运算 ; 将运算结果存回数组中的第var_4个元素 ; 结束循环后 ; 将数组的首地址存储在xor_data中 ; 将next_xor_data的地址存储在dword_D04470中 ; 进入循环,循环条件为i小于40 ; 将i加1 ; 将数组中的第i个元素减去i,并将结果存回数组中的第i个元素 ; 返回

汇编代码分析:数组异或运算与数据处理

原文地址: https://www.cveoy.top/t/topic/pXZx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录