分享
armadillo_4_standard_debug_blocker_simple_iat_redirection_code_splicing_n0p_6o_n0p.txt
下载文档

ID:3399779

大小:7.99KB

页数:5页

格式:TXT

时间:2024-04-28

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
armadillo_4_standard_debug_blocker_simple_iat_redirection_code_splicing_n0p_6o_n0p
/*------------------------------------------------------------------------------------------*\ * OllyScript by n0p-6o-n0p (n0p-6o-n0p@mail.ru) * * * * for: Armadillo 4 with standard-protection and optional: * * - Debug-Blocker * * - Code-Splicing * * * * date: 5th August '06 * * * * tested on Win XP SP1 * * with packed notepad.exe (standard protection + debug-blocker + spliced code) * * with packed notepad.exe (standard protection + debug-blocker) * * * * - you need the OdbgScript-PlugIn v1.5 to run the script: * * * * * * - you also need the OllyAdvanced Plugin (v1.26 beta 6) coded by Markus * * * * - check Flexible Breakpoints in Additional Options * * - i also checked all Bugfixes :) * \*------------------------------------------------------------------------------------------*/ var CondJump var Counter_OpenMutexA var SaveEaxRegister var SaveEbxRegister var SaveEdxRegister var CallAddr var Size var VirtualAlloc //-------------------------------------------------------------------------------------------- //##### DEBUG-BLOCKER - START ################################################################ //-------------------------------------------------------------------------------------------- MSGYN "Does this Target use Debug-Blocker?" cmp $RESULT, 0 JE no_DebugBlocker GPA "OpenMutexA", "kernel32.dll" //Get Address of OpenMutexA-API CMP $RESULT, 0 JE exit BP $RESULT //Set BP on OpenMutexA mov Counter_OpenMutexA, 0 Fix_DebugBlocker: ESTO //Shift+F9 RTU //Return to user code STI //F7 -> jne or je MOV SaveEaxRegister, eax //save eax register MOV eax, [eip] //copy DWORD at eip to eax CMP ah, 84 //2nd Byte @ eip = 84? (JE: 0F84????????) JNE second_je_check //no: goto Check for JE (74??) MOV ah, 85, 1 MOV [eip], eax //yes: patch JE -> JNE JMP cond_jump_fixed second_je_check: CMP al, 74 //1st Byte @ eip = 74? (JE: 74??) JNE is_not_je //no: goto Check for JNE (0F85????????) MOV al, 75 MOV [eip], eax //yes: patch JE -> JNE JMP cond_jump_fixed is_not_je: CMP ah, 85 //2nd Byte @ eip = 85? (JNE: 0F85????????) JNE second_jne_check //no: goto Check for JNE (75??) MOV ah, 84, 1 MOV [eip], eax //yes: patch JNE -> JE JMP cond_jump_fixed second_jne_check: CMP al, 75 //1st Byte @ eip = 75? (JNE: 75??) JNE is_no_jump //no: neither JNE nor JE found! MOV al, 74, 1 MOV [eip], eax //yes: patch JNE -> JE JMP cond_jump_fixed is_no_jump: MOV eax, SaveEaxRegister //Restore eax Register MSG "Neither JNE nor JE was found! Sure this Target uses Debug-Blocker?" JMP exit cond_jump_fixed: MOV eax, SaveEaxRegister //Restore eax Register ADD Counter_OpenMutexA, 1 CMP Counter_OpenMutexA, 2 //Fix Jump 2 times JNE Fix_DebugBlocker BC $RESULT //Delete BP on OpenMutexA //-------------------------------------------------------------------------------------------- //##### DEBUG-BLOCKER - END ################################################################## //-------------------------------------------------------------------------------------------- no_DebugBlocker: //-------------------------------------------------------------------------------------------- //##### CODE-SPLICING - START ################################################################ //-------------------------------------------------------------------------------------------- MSGYN "Does this Target use Code-Splicing?" cmp $RESULT, 0 JE no_CodeSplicing GPA "VirtualAlloc", "kernel32.dll" //Get Address of VirtualAlloc-API MOV VirtualAlloc, $RESULT CMP VirtualAlloc, 0 JE exit BP VirtualAlloc //Set BP on VirtualAlloc SearchCodeSplicing: ESTO //Shift+F9 CMP [esp+0C], 1000 JB SearchCodeSplicing CMP [esp+10],40 JNE SearchCodeSplicing //trace until right VirtualAlloc Call reached RTR //Run to return STI //F7 ASK "Enter the Section Address for the fixed spliced code, which is big enough (adata or pdata):" cmp $RESULT, 0 JE exit mov eax, $RESULT //modify eax ESTO //Shift+F9 RTR //Run to return STI //F7 mov eax, $RESULT //modify eax BC VirtualAlloc //Delete BP //-------------------------------------------------------------------------------------------- //##### CODE-SPLICING - END ################################################################## //-------------------------------------------------------------------------------------------- no_CodeSplicing: //-------------------------------------------------------------------------------------------- //##### SIMPLE IAT REDIRECTION - START ####################################################### //-------------------------------------------------------------------------------------------- GPA "VirtualProtect", "kernel32.dll" //Get Address of VirtualProtect-API CMP $RESULT, 0 JE exit BP $RESULT //Set BP on VirtualProtect SearchIatRedirection: ESTO //Shift+F9 CMP [esp+8], 1000 //size of VirtualProtect Call < 1000? JB FoundIatRedirection JMP SearchIatRedirection FoundIatRedirection: BC $RESULT //Delete BP on VirtualProtect RTU //Return to user code FINDOP eip, #6800010000# //Search for "PUSH 100" CMP $RESULT, 0 JE IAT_Error //If not found: Error FINDOP $RESULT, #E8????????# //Search for next Call CMP $RESULT, 0 JE IAT_Error //If not found: Error MOV CallAddr, $RESULT ADD CallAddr, [$RESULT + 1] ADD CallAddr, 5 //Calculated Call-Address MOV SaveEaxRegister, eax //save eax register MOV eax, [CallAddr] //copy DWORD @ Call to eax MOV al, C3 MOV [CallAddr], eax //Patch Call (-> RET) MOV eax, SaveEaxRegister //Restore eax Register JMP FixedIAT IAT_Error: MSG "Cannot fix IAT Redirection, sry :X" JMP exit //-------------------------------------------------------------------------------------------- //##### SIMPLE IAT REDIRECTION - END ######################################################### //-------------------------------------------------------------------------------------------- FixedIAT: //-------------------------------------------------------------------------------------------- //##### FIND OEP - START ##################################################################### //-------------------------------------------------------------------------------------------- //Get OEP GPA "CreateThread", "kernel32.dll" //Get Address of CreateThread-API CMP $RESULT, 0 JE exit BP $RESULT //Set BP on CreateThread ESTO //Shift+F9 RTU //Return to user code RTR //Run to return STI //F7 TraceToOepCall: MOV SaveEaxRegister, eax //save eax register MOV eax, [eip] //copy DWORD @ Call to eax MOV ax, D1FF //Call ecx CMP [eip], eax JE FoundOepCall MOV ax, D7FF //Call edi CMP [eip], eax JE FoundOepCall MOV eax, SaveEaxRegister //Restore eax Register STO //F8 JMP TraceToOepCall FoundOepCall: MOV eax, SaveEaxRegister //Restore eax Register STI //F7 = Jump to OEP MSG "You are now at the OEP. Dump the File with LordPE and fix the IAT with Imprec." //-------------------------------------------------------------------------------------------- //##### FIND OEP - END ####################################################################### //-------------------------------------------------------------------------------------------- exit: RET

此文档下载收益归作者所有

下载文档
猜你喜欢
你可能关注的文档
收起
展开