首页
社区
课程
招聘
使用
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2014-5-22 12:17
0
[原创]感谢大家!
岁月不饶人啊,老林好好休养,身体是最重要的
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2014-3-13 12:09
0
[求助帮扶] 让我们出点力帮助林版度过难关!(捐款名单见1楼)
往建行账号汇入1千,略表心意,祝老林平安
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2012-8-28 18:20
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2012-8-17 18:39
0
[讨论]内核重载的一些思路和疑惑
以前玩过,供参考:

导入函数是解析ntoskrnl导入表填充,肯定要处理。

至于重定位,保守点可以都定位到原始内核,缺点是有时候仍会到执行旧代码。
老V提到过可根据不同区段处理,“你懂的”,我没懂,汗。

我这么弄的: 若重定位项引用的目的地址所在区段为IMAGE_SCN_CNT_CODE,即认为是
代码,使用重载内核定位,定位到重载内核。如:

PAGE:004F9FE3 68 98 9F 4F 00         push    offset PsExitSpecialApc(x,x,x,x,x)

PsExitSpecialApc所在的PAGE区段可执行,用重载内核。

例外:

1) 异常处理函数必须定位到原内核:

   XpSP2异常分发代码:

   KiDispatchException ->
     RtlDispatchException ->
        RtlIsValidHandler    ->      ;检测RegistrationPointer->Handler
          RtlLookupFunctionTable     ;在PsLoadedModuleList搜索Handler所在模块

   Handler在xp下为_except_handler3,若定位到重载内核会导致检测失败,SEH不能正常工作.

2) 个别回调函数要处理下,Win7下MiniPacketCallback可能在驱动卸载后执行,不能定位到重加载内核。

可能还有别的问题,我当时只搞了这些。
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2011-10-24 21:01
0
[翻译]一步一步逆向分析黑色样本:ZeroAccess/ Max++/ Smiscer Crimeware rootkit
这篇教程第二部分有一点错误:“如你所见的,在这段代码块中,整个分发流程的判断部分基于的是CurrentStackLocation 的值。”

大概是这样的:

.text:10006E90 FltDeviceDispatch proc near 
.text:10006E90
.text:10006E90 fltDevice       = dword ptr  4
.text:10006E90 Irp             = dword ptr  8
.text:10006E90
.text:10006E90                 mov     eax, [esp+fltDevice] ;
.text:10006E94                 mov     ecx, [eax+DEVICE_OBJECT.DeviceExtension]
.text:10006E97                 push    ebp
.text:10006E98                 mov     ebp, [ecx+FLTEXT.LowerDeviceObject]
.text:10006E9B                 push    esi
.text:10006E9C                 mov     esi, [esp+8+Irp]
.text:10006EA0                 push    edi
.text:10006EA1                 mov     edi, [esi+60h]
.text:10006EA4                 mov     al, [edi+IO_STACK_LOCATION.MajorFunction]
.text:10006EA6                 cmp     al, IRP_MJ_POWER
.text:10006EA8                 jnz     short loc_10006EC6
.text:10006EA8
.text:10006EAA                 push    esi             ; Irp
.text:10006EAB                 call    ds:PoStartNextPowerIrp
.text:10006EAB
.text:10006EB1                 inc     byte ptr [esi+23h]
.text:10006EB4                 add     dword ptr [esi+60h], 24h
.text:10006EB8                 push    esi             ; Irp
.text:10006EB9                 push    ebp             ; DeviceObject
.text:10006EBA                 call    ds:PoCallDriver
.text:10006EBA
.text:10006EC0                 pop     edi
.text:10006EC1                 pop     esi
.text:10006EC2                 pop     ebp
.text:10006EC3                 retn    8
.text:10006EC3
.text:10006EC6 ; ---------------------------------------------------------------------------
.text:10006EC6
.text:10006EC6 loc_10006EC6:                           ; CODE XREF: FltDeviceDispatch+18j
.text:10006EC6                 push    ebx
.text:10006EC7                 mov     [edi+IO_STACK_LOCATION.DeviceObject], ebp
.text:10006ECA                 cmp     al, IRP_MJ_INTERNAL_DEVICE_CONTROL
.text:10006ECC                 jnz     short PassThru
.text:10006ECC
.text:10006ECE                 mov     eax, [edi+IO_STACK_LOCATION.Parameters.Scsi.Srb]
.text:10006ED1                 cmp     [eax+SCSI_REQUEST_BLOCK.Function], SRB_FUNCTION_EXECUTE_SCSI
.text:10006ED5                 jnz     short PassThru
.text:10006ED5
.text:10006ED7                 mov     cl, [eax+SCSI_REQUEST_BLOCK.Cdb]
.text:10006EDA                 movzx   edx, cl
.text:10006EDD                 sub     edx, SCSIOP_READ
.text:10006EE0                 jz      short ReadWrite
.text:10006EE0
.text:10006EE2                 sub     edx, 2          ; SCSIOP_WRITE
.text:10006EE5                 jnz     short PassThru
.text:10006EE5
.text:10006EE7
.text:10006EE7 ReadWrite:                              ; CODE XREF: FltDeviceDispatch+50j
.text:10006EE7                 xor     edx, edx
.text:10006EE9                 cmp     cl, SCSIOP_WRITE
.text:10006EEC                 mov     ecx, [eax+SCSI_REQUEST_BLOCK.DataTransferLength]
.text:10006EEF                 setz    dl
.text:10006EF2                 push    edx             ; int
.text:10006EF3                 mov     edx, [eax+SCSI_REQUEST_BLOCK.DataBuffer]
.text:10006EF6                 mov     eax, [esi+IRP.MdlAddress]
.text:10006EF9                 push    ecx             ; int
.text:10006EFA                 mov     ecx, [edi+IO_STACK_LOCATION.Context] ;
.text:10006EFA                                         ; 参考CLASSPNP!SubmitTransferPacket:
.text:10006EFA                                         ;
.text:10006EFA                                         ;  IoSetCompletionRoutine(Pkt->Irp, TransferPktComplete, Pkt, TRUE, TRUE, TRUE);
.text:10006EFA                                         ;  return IoCallDriver(nextDevObj, Pkt->Irp);
.text:10006EFA                                         ;
.text:10006EFA                                         ; 即context为PTRANSFER_PACKET类型。
.text:10006EFA                                         ; ;
.text:10006EFD                 push    edx             ; int
.text:10006EFE                 push    eax             ; MdlAddress
.text:10006EFF                 mov     eax, [ecx+TRANSFER_PACKET.OriginalIrp] ;
.text:10006F02                 push    edi             ; irpSp
.text:10006F03                 call    FilterRequest 
.text:10006F03
.text:10006F08                 mov     ebx, eax
.text:10006F0A                 test    ebx, ebx
.text:10006F0C                 jge     short PassThru
.text:10006F0C
.text:10006F0E                 mov     dl, 1           ; PriorityBoost
.text:10006F10                 mov     ecx, esi        ; Irp
.text:10006F12                 mov     [esi+IRP.IoStatus.anonymous_0.Status], ebx
.text:10006F15                 mov     [esi+IRP.IoStatus.Information], 0
.text:10006F1C                 call    ds:IofCompleteRequest
.text:10006F1C
.text:10006F22                 mov     eax, ebx
.text:10006F24                 pop     ebx
.text:10006F25                 pop     edi
.text:10006F26                 pop     esi
.text:10006F27                 pop     ebp
.text:10006F28                 retn    8
.text:10006F28
.text:10006F2B ; ---------------------------------------------------------------------------
.text:10006F2B
.text:10006F2B PassThru:                               ; CODE XREF: FltDeviceDispatch+3Cj
.text:10006F2B                                         ; FltDeviceDispatch+45j
.text:10006F2B                                         ; FltDeviceDispatch+55j
.text:10006F2B                                         ; FltDeviceDispatch+7Cj
.text:10006F2B                 movzx   edx, [edi+IO_STACK_LOCATION.MajorFunction]
.text:10006F2E                 mov     eax, [ebp+DEVICE_OBJECT.DriverObject]
.text:10006F31                 mov     ecx, [eax+edx*4+38h]
.text:10006F35                 push    esi
.text:10006F36                 push    ebp
.text:10006F37                 call    ecx
.text:10006F37
.text:10006F39                 pop     ebx
.text:10006F3A                 pop     edi
.text:10006F3B                 pop     esi
.text:10006F3C                 pop     ebp
.text:10006F3D                 retn    8
.text:10006F3D
.text:10006F3D FltDeviceDispatch endp

如果是读写请求,则取TRANSFER_PACKET.OriginalIrp,在10006F03的调用是个对IO_STACK_LOCATION的回溯,
找到栈顶irpSp->FileObject,构造Irp取文件全路径计算Hash,检测是否读写RK驱动文件,如果是,则对读请求
返回原始数据,写请求则仍然写入RK的东西。

大概是这么个意思,记不清楚了。
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2010-9-25 21:44
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2010-6-3 20:21
0
破解BestCrypt v8.20.6.2
还牛啥啊,我已经玩不动了
TrueCrypt我有,下了一直就没看过,有时间看看源码
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-12-20 11:48
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-9-29 19:08
0
修理一下挂马的
不知道呵呵。看它写64端口,我的kav没置口令给关了
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-9-8 20:32
0
[原创]过掉DNF游戏保护,仅供学习研究。不得用于非法途径。
先收藏,有时间再学习,可惜不是C代码

我试过把KiAttachProcess整个用lde剥出来,读写进程内存是可以的。只是玩玩,没试ObOpenObjectByPointer。
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-8-31 23:01
0
[原创]教你如何用OD加载微软符号库
前段时间也玩了一下呵呵,那几个符号相关的api把偶弄得很烦

SnagIt 9.x,超难用啊,还不如7.0的,截下来乱套了
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-7-4 00:06
0
[原创][原创]用DEP实现BreakOnExecute
嗯,是我写得太潦草了,再加几句说明:

跟OllyBone要做的事情一样,只是用的PTE的NX位,需要打开PAE。一般机器的DEP都是开着的,就在PAE下。
但做的标记会被清除掉,所以挂KeInterlockedSwapPte,在这把标记再置回去。大概就这意思。

deroko以前的DOER,也不好用。后来的xTracer更好,但我没读过。
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 30 2009-5-29 01:40
0
[求助]遇到了一个反调试的程序
没事干帮你脱了一个.不过里面有VM嘿嘿
精华数
RANk
494
雪币
629
活跃值
关注数
粉丝数
0
课程经验
0
学习收益
0
学习时长
基本信息
  能力排名: No.408
  等    级: LV9
活跃值  活跃值:活跃值
  在线值:
  浏览人数:504
  最近活跃:2024-2-22 10:06
  注册时间:2004-04-24
勋章
能力值

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册