|
TT小组简介
支持 |
|
|
|
|
|
哪位大侠给点提示:用CrypKey5.x加的壳如何脱?
sorry,no.but CrypKey 5.4 and the Power of (Self-) delusion http://www.woodmann.com/crackz/Tutorials/Crypkeye.htm |
|
哪位大侠给点提示:用CrypKey5.x加的壳如何脱?
CrypKey Instant v5.0 Part 1 - by CrackZ http://www.woodmann.com/crackz/Tutorials/Crypkey1.htm |
|
X-Ways.WinHex.v11.65-ROR
X-Ways.WinHex.v11.65-ROR |
|
Xtreme-Protector1.08DEMO出来了,那有KEY文件!
Xtreme-Protector1.07 crack |
|
GODUP - Godfather+ Olly Debugger Universal Plug-in
参见 http://ollydbg.win32asmcommunity.net/index.php?action=vthread&forum=2&topic=841 |
|
GODUP - Godfather+ Olly Debugger Universal Plug-in
This plug-in consist of 5 handy tools: 1. Map loader 2. Resource viewer 3. Process info 4. IDA signature loader 5. Notepad 1. Map loader - use it for loading map files produced by compiler or by IDA. You can use it to load label names and/or to load comments from .map file. There is no any checking if map file match currently debugged process. 2. Resource viewer - use it for looking to your resources ;-) This is probably only viewer which works through direct memory access - means that you can even look to resources of compressed (protected) executables. NOTE: Still in experimental phase. 3. Process info - Give you basic information about process + try to recognize compiler and protection mechanism. . Process info use signature file signs.txt from PE tools v1.5 (NEOx, .Cryorb) Fell free to add your own signatures and share it with us. 4. IDA signature loader - probably mostly wanted add on for Olly debugger - now you can use IDA signature without IDA ;-) Just look to process info - find your compiler and select and apply matching IDA signature. It's not problem if you apply wrong one, you can apply another also. Only what you must do is to set proper path to IDA signatures, and you need sigdump.exe file from IDA resource kit. 5. Notepad - Simple but smart notepad which load your notes per process automatically every time. |
|
|
|
武汉哪里能买到《加密与解密》第二版?
洪山科技书店(武汉大学侧门)50m左右 |
|
|
|
Armadillo 2.5x - 2.6x谁能脱!!
序 号:207163 标 题:Armadillo 2.5x 加壳的Konvertor 3.13脱壳 (5千字) 发信人:fwnl 时 间:2002-5-5 12:44:46 阅读次数:509 详细信息: Armadillo 2.5x 加壳的Konvertor 3.13脱壳 crack by fwnl 软件说明:是一个图片、音乐、文字及影音格式文件的转换程序,它总共可以转换135种文件格式,包含25种音乐格式、4种影音格式、105种图片格式及1种文字格式。 软件下载:http://www.onlinedown.net/konvertor.htm 破解工具:trw2000,Import REConstructor v1.4.2+ ,winhex10.45, Peditor 1.7. 首先要谢谢hying,leo_cyl,yahoo007,电神等大哥,因为这篇文章中的内容是按他的研究成果来写的. 特别是yahoo007大哥给了我不少帮助,也要谢谢hying大哥给我的Konvertor 3.12A的输入表. 由于最后输入表的问题并没有完美解决,所以还希望各位说说手动修复输入表的方法和技巧,因为这 方面的资料真是太少了,这也是我写这篇文章的初衷之一吧,谢谢 一.找oep 方法一: 这种方法是按leo_cyl上次的脱文来找的,原理请看leo_cyl写的Armadillo 2.52的脱文(强烈建义 脱壳前看看,并搞清楚原理) 首先用trw2000载入主程序,下 bpx createprocessa. F5返回程序被中断,下Pmodule返回程序中 然后Ctrl+↓ 向下看 0187:00909B06 CALL `KERNEL32!WaitForDebugEvent` //看到这个就不远了 0187:00909B0C TEST EAX,EAX 0187:00909B0E JZ NEAR 0090A128 0187:00909B14 MOV DWORD [EBP+FFFFFD70],00911468 ............. ............. 注意下面的这几句格式,在别的加壳程序中也是差不多的 0187:00909CB7 MOV ECX,[EBP+FFFFFE74] 0187:00909CBD CMP DWORD [ECX+0C],C0000005 0187:00909CC4 JNZ NEAR 00909E89 0187:00909CCA MOV EDX,[EBP+FFFFFE74] 0187:00909CD0 CMP DWORD [EDX+5C],BYTE +00 //下断在这里 0187:00909CD4 JZ 00909CE2 0187:00909CD6 MOV DWORD [EBP+FFFFFD70],009114E8 于是bpx 909cd0, f5返回,程序中断在00909CD0 下dd edx+18,再按一下F5可看见oep-> 474e06 方法二: 这种方法是按电神大哥说的方法来找的: 首先用trw2000载入主程序,bpx VirtualProtect,,在最后一次被中断后,下Pmodule返回程序,然后F10 单步走,当走到遇上的第2个call时,F8进入,然后F10单步走,直到走到call edi, edi的值就是oep-> 474e06 注意:开始 bpx virtualprotect 时,其中会中断很多次,这个程序在我机子上是中断 91 次, 所以我就是从第 91 中断后开始 F10单步走的. 二.初步脱壳 这里我是用的hying大哥的方法,因为leo_cyl上次的脱文中的意思我还没有搞明白,那篇文中谈到的几个 关键点在这个程序中我没找到 :( 下面的事就是要把hying大哥说的一段代码写入到程序里 6804000000 push PAGE_READWRITE 6800100000 push MEM_COMMIT 6800005800 push 580000h <-用peditor看程序的size of image ,我这里看到是57f000,大一点就写 6800000000 push 0 580000h xxxxxxxxxx call VirtualAlloc <-申请内存 mov edi,eax mov ecx,57e000 <- size of image-1000h= 57e000 mov esi,401000h <-基址加1000h,有的程序不是这个值 rep movsb 载入程序,按一下F10,看看当前的地址,我的是90b7d9, 于是d 90b7d9, Alt+↓ 向下看 看到 910F64处内存有一片 00 00 00 00 00 重新载入程序.bpx VirtualAlloc,Pmodule返回程序中,code on,可是看到 Call KERNEL32! VirtualAlloc前的代码,我机子上是 FF1528019100 然后,再重新载入程序, d 910F64 再 u 910F64,在内存窗口开始填入680400000068001000006800005800 6800000000FF1528019100,可看见下面内容, 再A 910f7e 回车写入 mov edi,eax 就可知代码为 89c7 后面的也是这样,最后可见代码窗口为下面这样: 0187:00910F64 6804000000 PUSH DWORD 04 0187:00910F69 6800100000 PUSH DWORD 01000 0187:00910F6E 6800005800 PUSH DWORD 00580000 0187:00910F73 6800000000 PUSH DWORD 00 0187:00910F78 FF1528019100 CALL `KERNEL32!VirtualAlloc` 0187:00910F7E 89C7 MOV EDI,EAX 0187:00910F80 B900E05700 MOV ECX,0057E000 0187:00910F85 BE00104000 MOV ESI,00401000 0187:00910F8A F3A4 REP MOVSB 0187:00910F8C 0000 ADD [EAX],AL 用Peditor 1.7打开原加壳程序,点FLC,在virtual Address 填入910f64,点do! 可知offset(hex)为3BF64 用winhex打开原加壳程序,从3BF64开始写入 6804000000680010000068000058006800000000FF152801910089C7B900E05700BE00104000F3A4 保存后用trw2000打开这个被修改的程序,bpx 474e06 ,中断后 r eip 910f64 ,然后f10单步走,走到00910F7E 时记下eax的值,我机子上是5560000,继续走到 910f8c时,下命令 w 5560000 5ADE000 c:\ppp.bin (5560000+57E000=5ADE000) 然后 r eip 474e06,F5返回,关闭程序 这时我们载入原加壳程序,bpx 474e06, f5返回中断,pedump脱出程序test.exe 用winhex分别打开test.exe和ppp.bin,在test.exe的offset 1000处开始,用ppp.bin替换下面的数据, 替换的长度就是ppp.bin的长度,然后保存. 三.修复输入表 这部分对我来说太难了,因为工具并不能完全解决.我的方法是: 在Import REConstructor v1.4.2+ 的 Attach to an Active Process 窗口中选取加壳程序的进程,有2个进程选上面的一个,然后在下方的oep处填入00074e06,点IAI AutoSearch,再点Get Imports,然后点Auto Trace,然后点看还有多少地址是NO,剩下的事就是手动找这些函数了. hying大哥说过 CreateEventW GetStringTypeA 如果发现这两个函数连续在一起的话,上面一个该改为GetStringTypeW 手工修复修入表后,程序应能运行了,好像也就不用注册了,可是注册部分在壳中,壳脱了注册也就不用了 这程序的输入表我是手工找到一部分,然后参照hying大哥给我的Konvertor 3.12A的输入表修复的 真希望那位能说说手工输复输入表,因为没有谁具体说过,都是很抽象的,向我这样菜鸟根本搞不明白, 我看了很多资料也只看到,BPX GetVersion ,然后在u 那些未解决的地址,再看看上面或下面,找出正确的函数.但是并不是所有的都能这样解决. 因为是初次接触Armadillo的壳,所以中文错误和不足之处可能不少,希望各高手指正,那样就太谢谢了 :) fwnl 2000.5.5 长沙 |
|
请给我脱Armadillo 1.xx-2.xx的工具吧!
用OD脱DEDE的Armadillo 1.xx - 2.xx壳 作者 正文 lzqgj 时间: 2004-2-02 周一, 下午11:06 标题: 用OD脱DEDE的Armadillo 1.xx - 2.xx壳 -------------------------------------------------------------------------------- 用OD脱DEDE的Armadillo 1.xx - 2.xx壳 程序名称:DeDe2.50 下载地址:可能已经很少有了,都升级到3.5了 破解工具:OD,PEID,ImportRec 破解平台:WinXP 前言: 前段时间破一个Delphi程序,用到DeDe,但提示输入密码,我哪有?SHIT!只好拿它来开刀。开工!正好有关Armadillo的文章较少,来一篇凑个热闹,不当之处请指正。 第一步、跳过调试器检查: 先IsDebuggerPresent插件隐藏OD,然后载入DEDE,忽略所有异常。 F9运行,程序提示有Debugger运行,点击OK后退出。看看在什么地方可以跳过NAG,故点击前BP DestroyWindow,然后点击OK,程序中断,CTRL+F9返回到程序 003E3247 CALL DWORD PTR DS:[3E64A8] ; USER32.DestroyWindow 003E324D MOV EAX,ESI --->在这 继续按Ctrl+F9返回直到如下代码: 003E088A JE SHORT 003E08CD --->可以跳过NAG! ........................... 003E08B5 ADD ESP,28 003E08B8 PUSH EAX 003E08B9 CALL 003E328D --->CALL NAG 003E08BE MOV EAX,DWORD PTR DS:[3F328C] --->返回到这,向上看! 003E08C3 ADD ESP,0C 003E08C6 XOR DWORD PTR DS:[EAX+74],3366 003E08CD JMP SHORT 003E08D2 注意在003E088A处可以跳过。重来一遍,下G 3E088A,提示无效地址。原来这地址是程序运行动态后生成的。只好让程序先运行一会在中断下来下断点。因为Armadillo壳有页保护,故BP VirtualProtect,F9运行,中断后下G 3E088A,程序再次中断,改变标志位令其强行跳转,然后Ctrl+F9返回,并将EAX值改为0,程序将往下运行,出现过期提示,要求输入注册码。 第二步、挫败注册要求: 要注册码?都有这玩意还要Cracker干吗?好,继续BP DestroyWindow,什么也不用输入,点Cancel,中断后三次CTRL+F9返回到如下代码: 003DCB24 CALL 003D80DF --->CALL NAG 003DCB29 MOVZX EAX,AL --->返回到此,明显是否注册的标志,改为1 003DCB2C TEST EAX,EAX 003DCB2E JNZ SHORT 003DCB38 至此程序能正常运行了,但工作还远远没有结束,你总不希望每次都用OD载入来运行程序吧? 第三步、避开修改文件头: 有文章说Armadillo会修改文件头,但没有具体说明怎么修改,怎么避开。看了书中Armadillo脱壳的文章,仍一知半解,没办法,只好恶补PE文件格式,总算明白了Armadillo修改文件头的原理。为了这个及修复IAT,花了差不多三天时间。原来PE文件有个PE标志,这里就是PE文件头,包含PE文件重要信息。而在程序起始代码+3C的地方(即40003C)总是指向PE标志的地址,用Winhex打开一个程序就会发现规律。Armadillo将会修改40003C处的数据,使其指向错误地址,并将原地址+6处的Section数目改变,脱壳后的程序自然就会运行不了,甚至使一些脱壳程序无法DUMP。 下断点BP VirtualProtect,我们希望在在Armadillo去掉页保护准备修改文件头时中断下来。F9运行,注意观察堆栈数据,这样就不用数中断次数了。几十次中断后到堆栈数据如下时: 0012BFE8 003E1063 /CALL 到 VirtualProtect 来自 003E1061 0012BFEC 00400000 |Address = Dede.00400000 --->页保护地址 0012BFF0 00000040 |Size = 40 (64.) --->长度 0012BFF4 00000004 |NewProtect = PAGE_READWRITE --->解除保护,可读写 0012BFF8 0012C014 \pOldProtect = 0012C014 这里解除保护,不过还不是修改文件头的地方,估计这里只是还原代码。继续F9运行,中间还会中断,不过是恢复保护。直到再次堆栈数据为: 0012BFE8 003E10B9 /CALL 到 VirtualProtect 来自 003E10B7 0012BFEC 00400000 |Address = Dede.00400000 0012BFF0 00000040 |Size = 40 (64.) 0012BFF4 00000004 |NewProtect = PAGE_READWRITE 0012BFF8 0012C014 \pOldProtect = 0012C014 CTRL+F9返回到: 003E10B7 CALL ESI --->Call VirtualProtect 003E10B9 PUSH EAX --->返回到此 003E10BA NOT EAX F8单步跟踪,直到: 003E1100 SUB EBX,EDI 003E1102 ADD DWORD PTR DS:[EAX+3C],EBX --->EAX=400000,修改文件头40003C 原值为00000040,即PE标志地址为400040,加EBX后就错误了。将EBX修改为0,继续F8单步跟踪,注意VirtualProtect保护的地址(应到400040了),到: 003E1185 ADD WORD PTR DS:[EDI+6],AX --->EDI=400040,修改文件头的Section数目 将AX修改为0,至此击败了对文件头的修改。 第四步、寻找OEP并DUMP程序: CTRL+F9几次返回到如下代码: 008116BA MOV DWORD PTR SS:[EBP-1C],EAX 008116BD PUSHAD 008116BE XOR EAX,EAX 008116C0 JNZ SHORT Dede.008116C4 008116C2 JMP SHORT Dede.008116D9 008116C4 JMP SHORT Dede.008116F9 以下在OD中显示乱码,应该容易找到的。OEP就快到了,一定要F8慢慢跟踪。到出现第一个Call [******]时跟入(否则程序)运行,应该是在: 008117C0 CALL DWORD PTR DS:[8520D4] --->F7跟入 继续F8单步跟踪到第一个CALL EDI处,在 003E2191 CALL EDI --->EDI=00809001 这里EDI本来是Armadillo加壳程序的OEP地址,但这个明显不是,F7跟入进去看看。 00809001 PUSHAD 00809002 JMP Dede.00809444 继续F8单步跟踪,注意花指令,并在一些循环处直接在下一代码F4跳出循环。如: 0080945D CALL Dede.00809476 --->花指令 F7进入,否则程序运行。 0080955F CMP EBX,DFAEE568 00809565 JNZ Dede.008094AE --->循环 0080956B MOV BX,AX --->在此处F4跳出, 程序最后又跳回到 0080900E MOV EBX,Dede.00443930 00809013 ADD EBX,EBP 00809015 SUB EBX,DWORD PTR SS:[EBP+443FD0] 到这里感觉象是进了另一个壳,似乎是ASPACK,继续F8跟踪。要想快,可以向下翻页,直到看到: 008093AA POPAD 008093AB JNZ SHORT Dede.008093B5 008093AD MOV EAX,1 008093B2 RETN 0C 008093B5 PUSH 0 --->这段是典型的ASPACK壳特征。 008093BA RETN 在8093B5处F4,代码变化为: 008093B5 PUSH Dede.0051FE18 --->Thank God, OEP!!! 008093BA RETN F8两次到51FE18,到达OEP。用OEDUMP插件DUMP程序。 第五步、获得正确的输入表: 因为壳会加密IAT,DUMP出的程序无法运行,还要修复IAT。运行ImportRec,在程序列表中选择DEDE.EDE,OEP填11FE18(51FE18-400000=11FE18),点IAT AutoSearch,Get Import获得输入表,有很多无效指针。查看其中任何一个,如: RVA: 0012F1B0 ptr 003CA9E7 表示在RVA为0012F1B处为无效指针,指向003CA9E7,明显是错误的。 重新运行程序,这次我们先在OD的DUMP窗口中显示52F1B0(52F1B0-400000=12FB10)处的内容,按以上步骤运行程序,看什么时候会被变成3CA9E7。发现是在第三步之后壳还原输入表并加密输入表。 再次运行程序,并在第三步后停下,在DUMP窗口中52F1B0处(或往前一点)右键下内存写入断点,F9运行直到中断两次。第一次中断是还原数据,第二次才是加密。 此时程序在一个循环中,还会有其它API函数还原、加密。所以继续单步跟踪,看看程序什么时候会获得API函数地址。注意API函数的地址一般是77******,观察EAX的值。到: 008092F6 CALL DWORD PTR SS:[EBP+444AFC] 008092FC TEST EAX,EAX --->EAX=77E577EF,kernel32.InterlockedIncrement 上面的那个CALL就是获得API地址的,某些重要的API会在里面被跳过,因而无法获得正确地址。再次来到8092F6时F7跟入,F8跟踪,注意在一些循环处下一代码F4跳出循环。到: 003C7146 PUSH EBX ; Dede.0071DC62 003C7147 XCHG EAX,EDI 003C7148 XCHG BX,BX 003C714B XCHG EAX,EDI 003C714C XOR EBX,EBX 003C714E TEST WORD PTR SS:[EBP+E],0FFFF 003C7154 JNZ SHORT 003C7159 003C7156 MOV EBX,DWORD PTR SS:[EBP+C] 003C7159 PUSH EDI 003C715A CALL DWORD PTR DS:[3E60C4] ; kernel32.GetModuleHandleA 003C7160 CMP DWORD PTR SS:[EBP+8],EAX 003C7163 JNZ SHORT 003C716C 003C7165 MOV ECX,3EA220 003C716A JMP SHORT 003C71BE 003C716C CMP DWORD PTR DS:[3EA830],EDI 003C7172 MOV ECX,3EA830 003C7177 JE 003C720F --->书上说这就是Magic Jump 重要函数会在此处不能跳过,就无法获得正确地址(书上也介绍找MAGIC JUMP有另一种方法,即可直接在GetModuleHandleA处设断,并辅以CTRL+F9观察返回代码,当返回以上代码并且将要还原IAT时就是Magic Jump了)。将其改为JMP 003C720F,然后G 51FE18,直接来到OEP处,再用ImportRec获得IAT,所有指针有效,FIX刚才DUMP出的程序,正常运行。 总结: 首先BP VTualProtect让程序中断,或直接F9运行,在出现NAG之前F12暂停,再G 3E088A。修改跳转方向并在RET处修改EAX值为0。 然后在出现注册窗口后下BP DestroyWindow断点,点Cancel中断后,CTRL+F9三次并将EAX返回值改为1。 G 3e1102,中断后将EBX值改为0;G 3E1185,中断后将AX值改为0。防止修改文件头。 G 3C7177,中断后将JE改为JMP,跳过IAT加密。 最后G 51FE18,在为OEP处DUMP程序并用ImportRec修复IAT。 最后一点说明:我这里如果先载入DEDE再隐藏OD,程序会退出,用FLYOBG可以不被检测到,但下BP DestroyWindow时程序不会中断,而查看断点明明已经有了。希望FLY兄能看看是怎么回事。 感谢各位观众有耐心看完。 |
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值