-
-
[求助]linux下的 .so 文件的逆向问题
-
发表于:
2014-4-29 12:53
6082
-
求助 各位大大 帮我分析 一个 LINUX下面的 .so 程序的 中的一个函数的运算方式 ,我 分析大概如下 :
输入 一个CODE对象,程序执行某种运算然后在输出 这个 CODE对象,我现在想知道 究竟执行了什么运算呢 ?
下面是 IDA代码部分 :
protect_code proc near
var_12D= byte ptr -12Dh
var_12C= dword ptr -12Ch
var_128= dword ptr -128h
var_124= dword ptr -124h
var_11D= byte ptr -11Dh
var_110= byte ptr -110h
var_10= byte ptr -10h
push ebp
xor edx, edx
mov ebp, esp
push edi
push esi
push ebx
call __i686_get_pc_thunk_bx
add ebx, 1A17h ; <suspicious>
sub esp, 128h
mov [ebp+var_12C], eax
lea eax, [ebp+var_110]
mov ecx, eax
nop
loc_5F8:
mov [ecx], dl
add edx, 1
add ecx, 1
cmp dx, 100h
jnz short loc_5F8
lea edx, [ebp+var_10]
xor ecx, ecx
mov [ebp+var_124], edx
lea esi, (m_code_key - 1FF4h)[ebx]
xor edx, edx
mov [ebp+var_128], esi
mov [ebp+var_11D], dl
mov [ebp+var_12D], cl
lea esi, [esi+0]
loc_630:
movzx edi, byte ptr [eax]
movzx edx, [ebp+var_11D]
mov ecx, edi
movzx esi, cl
movzx ecx, [ebp+var_12D]
add edx, esi
mov esi, [ebp+var_128]
add dl, [esi+ecx]
add ecx, 1
and ecx, 0Fh
mov [ebp+var_12D], cl
movzx esi, dl
mov [ebp+var_11D], dl
movzx edx, [ebp+esi+var_110]
mov [eax], dl
add eax, 1
mov edx, edi
cmp eax, [ebp+var_124]
mov [ebp+esi+var_110], dl
jnz short loc_630
mov ecx, [ebp+var_12C]
mov eax, [ebp+var_12C]
mov esi, [ecx+8]
add eax, 14h
test esi, esi
jle loc_74F
xor edx, edx
jmp short loc_6C6
loc_6C6:
lea edi, [eax+edx]
movzx ecx, byte ptr [edi]
cmp cl, 74h
jnz short loc_6A8
loc_6A8:
cmp cl, 7Ch
jz loc_768
loc_768:
mov byte ptr [edi], 0C8h
jmp loc_6D4
protect_code endp
m_code_key 21h, 0FEh, 0D7h, 0C6h, 82h, 20h, 88h, 0EBh, 0B9h, 5Bh, 16h, 0FDh, 87h, 9Ah, 5, 79h
前期调试结果是,这个的输出和输入 最后字节大小一样 ,应该就是执行了某种替换?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!