|
|
|
|
|
菜鸟手动脱Armadillo CopyMem-ll +Debug-Blocker壳全过程,超详细。。。
发现在有这种方法DUMP出来的程序不一定正确:( |
|
个人网络硬盘,有一些工具!
谢谢了:) |
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
最初由 whyIII 发布 只对Armadillo CopyMem-ll +Debug-Blocker而言 |
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
最初由 yuhong 发布 在OD的右边堆栈上面啊,你仔细看一下就能找到的。 |
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
最初由 yuhong 发布 那也正常,主要是修改程序嘛,这个做法的主要目的是获得IAT,也能找OEP。 你应该能停在OEP处吧? |
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
最初由 yuhong 发布 用OD载入未脱壳的程序,bp DebugActiveProcess,F9断下。看堆栈窗口: 0012DAC4 00423BDB /CALL 到 DebugActiveProcess 来自 NOTEPAD.00423BD5 0012DAC8 00000324 \ProcessId = 324<=====子进程句柄(以看到的自己机器看到的为准) 0012DACC 0012FF2C 打开另一个OD附加324这个子进程。然后ALT+F9返回程序: 00433999 N> - EB FE jmp short NOTEPAD.<ModuleEntryPoint><====中断在此处,还原代码 0043399B EC in al,dx 0043399C |. 6A FF push -1 0043399E |. 68 503C4500 push NOTEPAD.00453C50 还原00433999处代码代码,EB FE改为55 8B。 OK,BP OpenMutexA,F9后中断 堆栈内容: 0012F59C 004145F1 /CALL 到 OpenMutexA 来自 NOTEPAD.004145EB 0012F5A0 001F0001 |Access = 1F0001 0012F5A4 00000000 |Inheritable = FALSE 0012F5A8 0012FBDC \MutexName = "614:A2AA26D13" //注意MutexName这个地址每个机器不同,以看到的为主。 找一块程序领空空地址,写入一些欺骗Arm的代码。 Ctrl+G 401000 00401000 0000 ADD BYTE PTR DS:[EAX],AL //都是空地址。 00401002 0000 ADD BYTE PTR DS:[EAX],AL 00401004 0000 ADD BYTE PTR DS:[EAX],AL 00401006 0000 ADD BYTE PTR DS:[EAX],AL 00401008 0000 ADD BYTE PTR DS:[EAX],AL 0040100A 0000 ADD BYTE PTR DS:[EAX],AL 0040100C 0000 ADD BYTE PTR DS:[EAX],AL 0040100E 0000 ADD BYTE PTR DS:[EAX],AL 00401010 0000 ADD BYTE PTR DS:[EAX],AL 00401012 0000 ADD BYTE PTR DS:[EAX],AL OD直接双击修改,填入以下代码。 00401000 60 PUSHAD 00401001 9C PUSHFD 00401002 68 DCFB1200 PUSH 12FBDC //以上面堆栈中地址为准。 00401007 33C0 XOR EAX,EAX 00401009 50 PUSH EAX 0040100A 50 PUSH EAX 0040100B E8 687BA677 CALL KERNEL32.CreateMutexA 00401010 9D POPFD 00401011 61 POPAD 00401012 - E9 75C7A677 JMP KERNEL32.OpenMutexA ............................................................ 将当前的 Eip 77E6D78C 切换到 401000 来。 点右键 选在此处新建 Eip ,看到Eip 变为 401000 F9运行,中断在OpenMutexA处,取消断点,Ctrl+G 401000,右键撤销选择,还原刚才的代码 然后下命令bp VirtualProtect,F9运行,中断几次,真至出现非法指令异常,取消断点, 再下bp GetModuleHandleA,Shift+F9运行,断下,把断点改为硬件执行,F9运行几次,直到 堆栈内容 0012BC98 00D97995 /CALL 到 GetModuleHandleA 来自 00A17995 0012BC9C 0012BDD4 \pModule = "kernel32.dll" 看到这个动态库就可以按Alt+F9返回了 00D97995 FF15 C480B200 call dword ptr ds:[B280C4] ; KERNEL32.GetModuleHandleA 00D9799B 8B0D E011B300 mov ecx,dword ptr ds:[B311E0] 00D979A1 89040E mov dword ptr ds:[esi+ecx],eax 00D979A4 A1 E011B300 mov eax,dword ptr ds:[B311E0] 00D979A9 393C06 cmp dword ptr ds:[esi+eax],edi 00D979AC 75 16 jnz short 00B079C4 00D979AE 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C] 00D979B4 50 push eax 00D979B5 FF15 CC80B200 call dword ptr ds:[B280CC] ; KERNEL32.LoadLibraryA 00D979BB 8B0D E011B300 mov ecx,dword ptr ds:[B311E0] 00D979C1 89040E mov dword ptr ds:[esi+ecx],eax 00D979C4 A1 E011B300 mov eax,dword ptr ds:[B311E0] 00D979C9 393C06 cmp dword ptr ds:[esi+eax],edi 00D979CC 0F84 AD000000 je 00B07A7F //这是文章中提到的magic jmp 我下了硬件执行断点,在401000段下内存断点,按F9然后不断修改标志位Z,最后中断在004010cc处,清除所有断点,用Imprec1.6f选择进程324,填入OEP地址10cc,填入RAV:72ec,size:244,不要按自动搜索IAT,直接按获取输入表,再按显示无效地址,剪掉修复抓取文件就OK了。 如果再不行我就没法了 。 :( |
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
修改跳转的主要目的是得到未加密的IAT,然后添加到前面DUMP出的文件中啊:( |
|
|
|
大大哥,为什么我的LordPE dump文件arm加密第二条进程时会这样的?
最初由 whyIII 发布 :) 笔误 |
|
|
|
求助arm脱壳
最初由 XCyber 发布 试试 |
|
|
|
2000/XP下怎样进ring0?
最初由 采臣・宁 发布 C 的能贴出来吗? |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值