首页
社区
课程
招聘
[求助]请教一下od插件的问题
发表于: 2013-6-26 10:02 5689

[求助]请教一下od插件的问题

2013-6-26 10:02
5689
我知道phantom可以反掉seh硬件断点的清除。我想可能是patch一些函数。好像是KiUserDispatchException?不过我又想到一个问题,还有的插件patch kernel32的函数,为什么不会对其他程序造成影响?就算在od里面f2一个api的一句代码,都会修改这些dll,为什么系统中其他程序不受影响?是不是一修改dll会当前程序用的dll是一个副本,那不把系统dll的代码改回来,也没有问题吗。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
每一个程序都会重新LOAD的
2013-6-26 10:20
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
请问,是否是说,od插件随意修改系统的dll都没事?还有就是有没有比较好的保护硬件断点的插件啊,phantom用不了,sod没有这个功能,网上找了一些,用了程序就崩溃。每次都得手动。
2013-6-26 10:28
0
雪    币: 1392
活跃值: (5107)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
关于DLL的PATCH,其中WINDOWS核心编程中提过,所有对DLL的修改都是COPY ON WRITE也就是如果DLL没有被修改,那么所有的使用的同一个DLL的代码段在内存中只有一份,一旦被修改,系统会复制一份副本,你所有的修改在副本中进行,不影响其他的程序使用这个DLL
2013-6-26 10:45
0
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼上解释了,楼主可以参考一下OD插件的资料,自己写一个出来呀。
2013-6-26 11:10
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
核心编程看了几遍,我知道可能是写时赋值,不过不是很确定,那个写时复制也没看太明白。我也想试着弄个插件,但是感觉得查很多东西,patch那个ntdll里面的分发函数,让他传给SEH处理之前保存4个硬件断点,返回的时候再恢复可能能行。但是我编程很弱。。
早上搞了几个小时aspr的壳,我只加了简单的保护,对着源程序,不偷oep,不加高级iat保护,直接暂停dump oep,这个壳都能修改dump的内容。
这是暂停加壳后程序运行起来的IAT,我有原来的程序,所以知道oep在哪,加壳的时候也没有偷
0040804C  7678528C  kernel32.LCMapStringW
00408050  7678F920  kernel32.LCMapStringA
00408054  7677DCB2  kernel32.GetSystemInfo
00408058  76772C15  kernel32.VirtualProtect
0040805C  7676B3BB  kernel32.GetLocaleInfoA
00408060  7677C43A  kernel32.VirtualAlloc
00408064  767978F9  kernel32.IsBadCodePtr
00408068  76768E38  kernel32.IsBadWritePtr
0040806C  7676BCAB  kernel32.IsBadReadPtr
00408070  7677F4FB  kernel32.SetUnhandledExceptionFilter
00408074  76788E7F  kernel32.GetCPInfo
00408078  7677440A  kernel32.GetOEMCP
0040807C  7677D90B  kernel32.GetACP
00408080  7678532E  kernel32.GetStringTypeW
00408084  7677EF07  kernel32.MultiByteToWideChar
00408088  76766B85  kernel32.GetStringTypeExA
0040808C  76786C3F  kernel32.VirtualQuery
00408090  7677C452  kernel32.InterlockedExchange
00408094  77202D66  ntdll.RtlAllocateHeap
00408098  7721FF2F  ntdll.RtlReAllocateHeap



这是dump加修复之后的iat的一部分。
00408048 >7677F73C  kernel32.UnmapViewOfFile
[COLOR="Blue"]0040804C >69BC4B16  AcGenral.69BC4B16
00408050 >69BC4B8D  AcGenral.69BC4B8D[/COLOR]
00408054 >7677DCB2  kernel32.GetSystemInfo
00408058 >76772C15  kernel32.VirtualProtect
0040805C >7676B3BB  kernel32.GetLocaleInfoA
00408060 >7677C43A  kernel32.VirtualAlloc
00408064 >767978F9  kernel32.IsBadCodePtr
00408068 >76768E38  kernel32.IsBadWritePtr
0040806C >7676BCAB  kernel32.IsBadReadPtr
00408070 >7677F4FB  kernel32.SetUnhandledExceptionFilter
00408074 >76788E7F  kernel32.GetCPInfo
00408078 >7677440A  kernel32.GetOEMCP
0040807C >7677D90B  kernel32.GetACP
00408080 >7678532E  kernel32.GetStringTypeW
00408084 >7677EF07  kernel32.MultiByteToWideChar
00408088 >76766B85  kernel32.GetStringTypeExA
0040808C >76786C3F  kernel32.VirtualQuery
00408090 >7677C452  kernel32.InterlockedExchange
[COLOR="Blue"]00408094 >658192CD  AcXtrnal.658192CD
00408098 >65819832  AcXtrnal.65819832[/COLOR]


dump出来的内容都不同,包括oep代码也变成垃圾代码了,不敢相信。。
很早之前也想弄这个壳,但是只看懂了一点教程,现在脱了几个低强度的壳,想看看这个壳。。。
2013-6-26 11:28
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
弄错了,睡觉起来仔细看了一下。
无壳的程序,有这样的函数
0040804C >69BC4B16  AcGenral.69BC4B16
00408050 >69BC4B8D  AcGenral.69BC4B8D
加壳程序,运行起来,是
0040804C  7678528C  kernel32.LCMapStringW
00408050  7678F920  kernel32.LCMapStringA
dump之后,这段没有变化
0040804C  7678528C  kernel32.LCMapStringW
00408050  7678F920  kernel32.LCMapStringA
fix之后,变回了跟无壳程序一样
0040804C >69BC4B16  AcGenral.69BC4B16
00408050 >69BC4B8D  AcGenral.69BC4B8D
然后fix之后的程序,不知道为何跑不起来。
asprotect2.2.zip
都上传了,对AheadLib加了壳。
上传的附件:
2013-6-26 14:22
0
游客
登录 | 注册 方可回帖
返回
//