【文章标题】: VA_X inline Pathcing
【文章作者】: yangjt
【作者邮箱】: yangjietao123@163.com
【作者主页】: http://blog.sina.com.cn/yangjt
【作者QQ号】: 325002492
【软件名称】: VA_X
【加壳方式】: Armadillo
【操作平台】: Win Vista+ Win XP
【前 传】: BRD 51的时候很过分……
【修改说明】: 自己做起来才发现不是那么回事……本着认真负责的态度……我来重写这篇文章^_^
--------------------------------------------------------------------------------
【详细过程】
原理就是Hook ArmAccess.dll输入表里的VirtualProtect,因为解码后程序会N次调用到这个函数……所以我们把它给改到我们的代码上,然后就可以为所欲为了……(^_^)当然中间还需要处理Arm的CRC校验。所以如何处理……请听我慢慢说来
First Step:
prepare
patch 代码前要做一些准备工作
用PeEditor把程序的.text段和.adata段的属性加上可写属性,因为代码需要对这两段进行SMC,如果不能写就会出现页保护错误
之后OllyICE打开程序,下那个经典的断点VirtualProtect,锁定程序解码ArmAccess.dll时对其区段进行的页保护设定
这段代码长成这个样子:
查一下MSDN就不难发现0x02是PAGE_READONLY,顺便也看下PAGE_EXECUTE_READWRITE,嗯……这个值是0x40
好下面让我们继续分析
1F25A545 C745 B8 02000>
mov dword ptr [
ebp-48], 2
这句代码很诡异……因为它的作用……很显然嘛,把页保护属性装载到某个神秘的地方,这句不Patch到最后Hook ArmAccess.dll里的VirtualProtect就要出错。
把0x02Patch成0x40就OK啦~~嗯……第一部分工作完成……保存此处修改……休息下眼睛^_^
第二部分开工咯~~
patch 代码要写到.adata 段
original:
1F259A2C |. A1 04A1291F
mov eax,
dword ptr [1F29A104]
patch:
比如拿1727做实例就应该这样写代码
--------------------------------------------------------------------------------
【经验总结】
@@3的部分可以用自己的方法代替,比如说用y3y3y3的方法,和我以前所写过的方法,最后Patch完了别忘了jmp
btw:不能使用SetEnvironmentVariable的方法=.=当然脱了壳以后可以Set下面这两个
"DAYSLEFT"
"DAYSINSTALLED"
至于VirtualProtect,这个API Armadillo自己就用到的,可以jmp dword ptr[.....]
在这里说明下……那个4th CRC是用ArmaCRC找出来的,文件在附件里
附带附件为Patch,直接打上即可。算是一个礼物吧……不收费啦~~
祝天下所有的父亲节日快乐哈~~
后传:构建和谐社会,人人有责……^_^
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
2009年06月21日 12:43:52