Armadillo加壳版本号和保护方式的简单判断方法
Armadillo的使用越来越广泛了,似乎有和AsProtect平分天下的趋势
_____________________________________________________________
一、Armadillo V3.X 的版本判断可以使用Armadillo Exact Version Location TutorialArmadillo Exact Version Location Tutorial / MEPHiST0[Unpacking Gods]
看雪论坛精华6
标 题:[转载]快速判断Armadillo壳版本
发信人:yesky1
时 间:2004-08-24,10:32
详细信息:
偶尔看到的,试了一下,感觉比较好用
大概是这样:
设断点 CreateThread 或者SetProcessWorkingSetSize
停下来后,Ctrl+F9返回,
然后右键 Search for -- All Referenced text strings
到text reference窗口,右键 Search for text
选中Entire scope搜索字符串: armVersion
来到这里
Text strings referenced in 01030000..01077FFF, item 57
Address=0103481C
Disassembly=PUSH 106300C
Text string=ASCII " <armVersion xsi:type="xsd:string">%s</armVersion>"
貌似Armadillo的xml格式配置文件?
双击该行来到disassemble窗口,向上拖动一行
看到
01034817 68 44300601 PUSH 1063044 ; ASCII "3.76"
0103481C 68 0C300601 PUSH 106300C ; ASCII " <armVersion xsi:type="xsd:string">%s</armVersion>"
啊哈,这正是Armadillo的版本号,据说此法从Armadillo3.20c到最新版的Armadillo都支持。
_____________________________________________________________
二、Armadillo V4.X 目前还没有发现判断确切版本的方法不过Armadillo自从V4.0新加了个Anti OllyDBG手段:OutputDebugStringA
OllyDbg在处理调式包含格式串的消息时存在问题,被跟踪的应用程序可以使OllyDbg崩溃,或可能以进程权限执行任意指令。OutputDebugString函数可发送字符串到调试器上,然后OllyDbg会在底端显示相关状态消息,但是如果包含格式串消息,就可能使OllyDbg崩溃。
Armadillo以前的版本没有此种Anti,自V4.0始才有。
Armadillo Find Protected 目前可以识别出某些版本号,其特征码数据库还在完善中。
_____________________________________________________________
三、其实Armadillo版本判断并不重要,重要的是搞清楚其保护方式1、Aramdillo单进程的都是标准壳
2、双进程的有标准壳更多是CopyMem-II。需要跟踪调试才能知道,如何跟踪?看N多Armadillo脱壳教程再跟随练习就明白了
3、CopyMem-II需要父进程解码子进程
4、Nanomites肯定是双进程,Debugger-Blocker or CopyMem-II
The Nanomites provide additional protection against memory-dumping for your programs. They will protect your program even if it is somehow stripped out of the SoftwarePassport/Armadillo shell. If your program can use the Debugger-Blocker or CopyMem-II, it should be able to use Nanomites as well. Besides enabling this option, you must mark sections within your program where Nanomites are permitted to reside and won't cause any speed problems, and use a custom build of the Armadillo engine. This option can only be used with the Debugger-Blocker or CopyMem-II protections.
Nanomites需要配合SDK才能使用。被保护程序的子进程中某些跳转被改成Int3,执行到此会产生异常。父进程接管异常后返回子进程应该如何跳转的结果,这样就使得调试和脱壳的难度大大增加了。
5、Code Splicing和Import Table Elimination需要你去看。ArmInline修复这些很方便,虽然有些bug
6、研究一下Aramdillo's ARMHELP.chm、UserGuide.chm、API.chm,会大有裨益的
_____________________________________________________________
四、强烈推荐:Armadillo Find Protectedvel的Armadillo Find Protected可以识别出Armadillo的保护方式,vel将会成为另位Armadillo杀手。
Armadillo Find Protected V1.3
http://www.unpack.cn/viewthread.php?tid=4820
<------- 01-07-2006 15:44:33 ------->
*\Armadillo.exe
!- Protected Armadillo
Version 4.30a (Public Build)
Protection system (Professional)
!- <Protection Options>
Debug-Blocker
CopyMem-II
Enable Import Table Elimination
Enable Nanomites Processing
Enable Memory-Patching Protections
!- <Backup Key Options>
Main Key Only, No Backup Keys
!- <Compression Options>
Best/Slowest Compression
!- <Other Options>
_____________________________________________________________
, _/
/| _.-~/ \_ , 青春都一晌
( /~ / \~-._ |\
`\\ _/ \ ~\ ) 忍把浮名
_-~~~-.) )__/;;,. \_ //'
/'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了脱壳轻狂
`~ _( ,_..--\ ( ,;'' / ~-- /._`\
/~~//' /' `~\ ) /--.._, )_ `~
" `~" " `" /~'`\ `\\~~\
" " "~' ""
By : fly
http://www.unpack.cn
2006.01.31 20:00
2006.08.07 12:00
[课程]Linux pwn 探索篇!