Zend 混淆函式演算法

2021-06-06 16:39:17 字數 1627 閱讀 8782

const uchar key[24] = ;

ulong my_ddce30_ex( const tchar *string, ulong length )

__declspec( naked ) void my_dd6d40( void *buffer, const tchar *string )

}void my_dd6c70_ex( void *key, const tchar *string, ulong length )

else

length = ecx;

memcpy( eax + ( tchar* )ebx + 24, esi, ecx );

eax += ecx;

if ( eax < 0x40 )

return;

edi = edx - ecx;

esi = ecx + string;

my_dd6d40( ebx, ( tchar* )ebx + 24 );

}if ( edi >= 0x40 )

}if ( edi )

memcpy( ( tchar* )ebx + 24, esi, edi );

}void my_dd7650_ex( void *key, tchar *buffer )

void obfuscate_name( zend_function *function, tchar *buffer, const tchar *string, ulong length )

void obfuscate_class_name_ex( tchar *obfuscate, const tchar *string, ulong length )

if ( length == 0 )

break;

out = obfuscate;

if ( length <= 4 )

}else

eax = buffer[eax];

eax ^= *( ( uchar* )in );

in++;

*out++ = legecycharset[eax % ( size_of_array( legecycharset ) - 1 )];}}

*out = _t( '\0' );

} while ( 0 );

}void obfuscate_function_name_ex( tchar *obfuscate, const tchar *string, ulong length )

if ( length == 0 )

break;

out = obfuscate;

if ( length <= 4 )

}else

eax = buffer[eax];

eax ^= *( ( uchar* )in );

eax &= 0x8000007f;

if ( ( long )eax < 0 )

if ( eax == 0 )

eax++;

else if ( eax == 0x3a )

eax++;

in++;

*out++ = ( tchar )eax;}}

*out = _t( '\0' );

} while( 0 );

}

函式混淆之Method Swizzling

method swizzling是改變乙個selector的實際實現的技術。通過這一技術,我們可以在執行時通過修改類的分發表中selector對應的函式,來修改方法的實現。通過這種方法可以實現函式混淆。static dispatch once t oncetoken dispatch once on...

函式指標與指標函式容易混淆

在學習arm過程中發現這 指標函式 與 函式指標 容易搞錯,最簡單的辨別方式就是看函式名前面的指標 號有沒有被括號 包含,如果被包含就是函式指標,反之則是指標函式。今天我們從頭把它搞清楚 首先它們之間的定義 1 指標函式是指帶指標的函式,即本質是乙個函式,函式返回型別是某一型別的指標。型別識別符號 ...

Yii框架整合Zend庫函式生成Web Feed

web feed是一種用於為使用者提供經常更新內容的資料格式。在這篇文章中,我們描述了怎樣使用元件zend feed,它是乙個優秀框架zend framework的優秀元件,可以為乙個yii應用生成web feed。這篇文章同樣是一篇如何使用zend framework的元件的教程。首先,我們 ze...