|
[原创]PECompact 2.x -> Jeremy Collake脱壳
寄存器窗口: 0012FFBC 0012FFE0 Pointer to next SEH record 0012FFC0 0047B894 SE handler 0012FFC4 7C816D4F RETURN to kernel32.7C816D4F 看这一行: 0012FFC0 0047B894 SE handler SEH句柄 |
|
[讨论]脱Armadillo 3.78 - 4.xx到最后一步无发下断的难题。
找CALL 寄存器的 F7进 |
|
[已解决]穿山甲壳 4X版本 请君王传世大哥把修复的详细过程说一下啊 我试了半天还是没有修复成功..
楼主不会用GOOGLE啊,教程很多 http://bbs.pediy.com/showthread.php?t=58702 这是我贴错了地方的 |
|
[己解决] 2个穿山甲壳的问题 请高手解答下 谢谢啊谢谢、、
不好意思,贴错地方了 |
|
[己解决] 2个穿山甲壳的问题 请高手解答下 谢谢啊谢谢、、
穿山甲 双进程 标准保护 第一步 载入OD,插件隐藏,停在这里 004E2000 > 60 pushad 004E2001 E8 00000000 call 004E2006 004E2006 5D pop ebp 004E2007 50 push eax 004E2008 51 push ecx 断点 BP OpenMutexA ,F9运行 异常在这里,添加异常,Shift+F9继续 004EB5C3 F0: prefix lock: 004EB5C4 F0:C7 ??? ; 未知命令 004EB5C6 C8 64678F enter 6764, 8F 004EB5CA 06 push es 004EB5CB 0000 add byte ptr [eax], al 停在这里 7C80EA1B > 8BFF mov edi, edi 7C80EA1D 55 push ebp 7C80EA1E 8BEC mov ebp, esp 7C80EA20 51 push ecx 7C80EA21 51 push ecx 7C80EA22 837D 10 00 cmp dword ptr [ebp+10], 0 7C80EA26 56 push esi 代码窗口 Ctrl+G -> 00401000 00401000 0000 add byte ptr [eax], al 00401002 0000 add byte ptr [eax], al 00401004 0000 add byte ptr [eax], al 00401006 0000 add byte ptr [eax], al 这些都是空数据段,添加以下代码 00401000 60 pushad //此处新建EIP,RUN 00401001 9C pushfd 00401002 68 54FD1200 push 12FD54 ; ASCII "8B8::DAE2B8142D" //这为上面堆栈的值,根据自己机子而定 00401007 33C0 xor eax, eax 00401009 50 push eax 0040100A 50 push eax 0040100B E8 2FD9407C call kernel32.CreateMutexA 00401010 9D popfd 00401011 61 popad 00401012 - E9 04DA407C jmp kernel32.OpenMutexA 60 9C 68 54 FD 12 00 33 C0 50 50 E8 2F D9 40 7C 9D 61 E9 04 DA 40 7C 再此来到 Ctrl+G -> 00401000 撤消修改代码 撤消断点 第二步 断点 he OutputDebugStringA Shift+F9 停在这里 7C859D78 > 68 34020000 push 234 7C859D7D 68 A0A0857C push 7C85A0A0 7C859D82 E8 3F87FAFF call 7C8024C6 7C859D87 A1 CC46887C mov eax, dword ptr [7C8846CC] 看堆栈,找到哪个0012EB58 0012F3A4 \String = "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" 在上面那行 在数据窗口中跟随,在数据窗口中(右键 长型 地址)右键 二进制 00填充,这是OD的字符串溢出 , 继续 Shift+F9 7C859D78 > 68 34020000 push 234 7C859D7D 68 A0A0857C push 7C85A0A0 7C859D82 E8 3F87FAFF call 7C8024C6 7C859D87 A1 CC46887C mov eax, dword ptr [7C8846CC] 再像上面那样来一次 此时取消断点,返回 继续下断 he GetModuleHandleA+5(2000下+5不行)Shift+f9 看堆栈 0012943C /0012EB50 00129440 |00D364B5 返回到 00D364B5 来自 kernel32.GetModuleHandleA 00129444 |00D61BB0 ASCII "kernel32.dll" 00129448 |00D62B68 ASCII "VirtualAlloc" 0012943C /0012EB50 00129440 |00D364D3 返回到 00D364D3 来自 kernel32.GetModuleHandleA 00129444 |00D61BB0 ASCII "kernel32.dll" 00129448 |00D62B5C ASCII "VirtualFree" 第三次来到这里(堆栈) 00129188 /00129440 0012918C |00D18C74 返回到 00D18C74 来自 kernel32.GetModuleHandleA 00129190 |00129308 ASCII "kernel32.dll" //取消断点 Alt+f9返回,这就是返回时机 停在这里 00D18C74 8B55 F4 mov edx, dword ptr [ebp-C] 00D18C77 8B0D 84EFD600 mov ecx, dword ptr [D6EF84] 00D18C7D 890491 mov dword ptr [ecx+edx*4], eax 00D18C80 8B55 F4 mov edx, dword ptr [ebp-C] 00D18C83 A1 84EFD600 mov eax, dword ptr [D6EF84] 往下拉,找到 00D18DED /0F84 45010000 je 00D18F38 //这了,Magic Jump 改JMP 再往下拉 00D18F73 ^\E9 74FCFFFF jmp 00D18BEC 00D18F78 EB 03 jmp short 00D18F7D //在这里下硬件执行Shift+F9 断下后撤消断点 00D18F7A D6 salc 00D18F7B D6 salc 重要:断下后,记得要撤消Magic Jump处的修改! 为何要这样做?我发现程序在下面会依据原先的代码进行解码, 以前下 硬件断点 操作没有修改原代码,所以解码正确。 而直接修改Magic Jump后改变了原先的代码,导致解码不正确而异常出错! 现在我们在解码以前恢复原先的代码,因此就不会再出错了! , 最后一次下断(也可以用内存Alt+M 找00401000)下断,再这里 我们下断点 bp CreateThread 7C810637 > 8BFF mov edi, edi 7C810639 55 push ebp 7C81063A 8BEC mov ebp, esp 7C81063C FF75 1C push dword ptr [ebp+1C] 7C81063F FF75 18 push dword ptr [ebp+18] 取消断点,返回 00D243AC 50 push eax 00D243AD FF15 5CF2D500 call dword ptr [D5F25C] ; kernel32.CloseHandle 00D243B3 5E pop esi 00D243B4 5B pop ebx F8单步 00D4046E 51 push ecx 00D4046F 8B55 F4 mov edx, dword ptr [ebp-C] 00D40472 2B55 DC sub edx, dword ptr [ebp-24] 00D40475 FFD2 call edx ; 风火助理.0040389F //这里F7进,就是OEP 00D40477 8945 FC mov dword ptr [ebp-4], eax 00D4047A 8B45 FC mov eax, dword ptr [ebp-4] 是不是红色的代码,那就对了,脱壳+修复 用PEID查脱壳后的还是显示 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks 其实是PEID的误报,壳是脱了的。 |
|
[已解决]穿山甲壳 4X版本 请君王传世大哥把修复的详细过程说一下啊 我试了半天还是没有修复成功..
没有找到最嘉返回时机,当然找不到Magic Call 了 |
|
[求助]UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo脱壳
http://bbs.pediy.com/showthread.php?p=425699#post425699 |
|
[求助]UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo脱壳
1.UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo 对Delphi程序加的UPX0.89的壳 手脱基本是向上跳的不能让它向上跳,按F4下去,最后有个大回跳(一般是JMP),就到OEP了 0046AD4B 83C3 04 add ebx,4 0046AD4E ^ EB E1 jmp short UPX_0_89.0046AD31 0046AD50 FF96 64AA0600 call dword ptr ds:[esi+6AA64] 0046AD56 61 popad 0046AD57 ^ E9 98CBFEFF jmp UPX_0_89.004578F4 //过了此句就到OEP了 返回后来到这里是第一句 004578F4 > /55 push ebp 004578F5 . |8BEC mov ebp,esp 004578F7 . |83C4 F4 add esp,-0C 004578FA . |B8 AC774500 mov eax,UPX_0_89.004577AC 看入口语言特征,判断为Delphi语言代码. 当然用ESP定律更快到OEP (在ESP和EIP同时为红色时->在数据窗口跟随->断点->设置硬件访问断点->Word,F9运行到JMP) |
|
[求助]发个未知壳`像是UPX的变形壳``超难`直接关OD`
没装哪个游戏,帮不了忙,sorry |
|
[求助]请问PE文件中,.idata段中,紧跟在import table后的数据是什么?
去找一下 常见编程语言的入口及区段特征 那里有非常详细的图文 |
|
|
|
[求助]爆破后,重新启动还要注册
可能没有改对暴点,或许有多处需要进一步跟踪 |
|
[求助]yodas cryptor脱壳找不到OEP问题。。。。。。。。
楼主你好,这是我以前写过的一点东西,希望有所帮助: yoda's cryptor 1.2 http://bbs.pediy.com/showthread.php?t=59730 |
|
[求助]ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
[QUOTE=lhljy;334228]ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov 请问这个壳需要怎么脱 在线等待~!在这里先说声谢谢~!...[/QUOTE] 这壳算是强壳之一吧,但是版本比较老了,脱起来也不难,摆渡里应该有教程的,实在没有去看看天草的中级教程,里面一定有 |
|
[求助]ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
[QUOTE=lhljy;334228]ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov 请问这个壳需要怎么脱 在线等待~!在这里先说声谢谢~!...[/QUOTE] 这壳算是强壳之一吧,但是版本比较老了,脱起来也不难,摆渡里应该有教程的,实在没有去看看天草的中级教程,里面一定有 |
|
[原创]一切浅中行 ---新兵日记
也站一层楼吧,楼主的学习精神可嘉,值得学习,讲到汇编,学习起来是满枯燥的,我每次看 汇编时间最长不会超过15分钟就没兴趣了,怪不的我学习成绩一直不好,呵呵 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值