idapython脚本之符号设置

对于wdf函数的符号脚本,有些程序中是会加载失败的,此时再看wdf的函数就比较蛋疼了,所以写了个脚本来自动化加载wdf的函数符号,方便又快捷

# -- coding: utf-8 --


import idaapi
import idc
import os
import sys




func_name = ["WdfChildListCreate",
"WdfChildListGetDevice",
"WdfChildListRetrievePdo",
"WdfChildListRetrieveAddressDescription",
"WdfChildListBeginScan",
"WdfChildListEndScan",
"WdfChildListBeginIteration",
"WdfChildListRetrieveNextDevice",
"WdfChildListEndIteration",
"WdfChildListAddOrUpdateChildDescriptionAsPresent",
"WdfChildListUpdateChildDescriptionAsMissing",
"WdfChildListUpdateAllChildDescriptionsAsPresent",
"WdfChildListRequestChildEject",
"WdfCollectionCreate",
"WdfCollectionGetCount",
"WdfCollectionAdd",
"WdfCollectionRemove",
"WdfCollectionRemoveItem",
"WdfCollectionGetItem",
"WdfCollectionGetFirstItem",
"WdfCollectionGetLastItem",
"WdfCommonBufferCreate",
"WdfCommonBufferGetAlignedVirtualAddress",
"WdfCommonBufferGetAlignedLogicalAddress",
"WdfCommonBufferGetLength",
"WdfControlDeviceInitAllocate",
"WdfControlDeviceInitSetShutdownNotification",
"WdfControlFinishInitializing",
"WdfDeviceGetDeviceState",
"WdfDeviceSetDeviceState",
"WdfWdmDeviceGetWdfDeviceHandle",
"WdfDeviceWdmGetDeviceObject",
"WdfDeviceWdmGetAttachedDevice",
"WdfDeviceWdmGetPhysicalDevice",
"WdfDeviceWdmDispatchPreprocessedIrp",
"WdfDeviceAddDependentUsageDeviceObject",
"WdfDeviceAddRemovalRelationsPhysicalDevice",
"WdfDeviceRemoveRemovalRelationsPhysicalDevice",
"WdfDeviceClearRemovalRelationsDevices",
"WdfDeviceGetDriver",
"WdfDeviceRetrieveDeviceName",
"WdfDeviceAssignMofResourceName",
"WdfDeviceGetIoTarget",
"WdfDeviceGetDevicePnpState",
"WdfDeviceGetDevicePowerState",
"WdfDeviceGetDevicePowerPolicyState",
"WdfDeviceAssignS0IdleSettings",
"WdfDeviceAssignSxWakeSettings",
"WdfDeviceOpenRegistryKey",
"WdfDeviceSetSpecialFileSupport",
"WdfDeviceSetCharacteristics",
"WdfDeviceGetCharacteristics",
"WdfDeviceGetAlignmentRequirement",
"WdfDeviceSetAlignmentRequirement",
"WdfDeviceInitFree",
"WdfDeviceInitSetPnpPowerEventCallbacks",
"WdfDeviceInitSetPowerPolicyEventCallbacks",
"WdfDeviceInitSetPowerPolicyOwnership",
"WdfDeviceInitRegisterPnpStateChangeCallback",
"WdfDeviceInitRegisterPowerStateChangeCallback",
"WdfDeviceInitRegisterPowerPolicyStateChangeCallback",
"WdfDeviceInitSetIoType",
"WdfDeviceInitSetExclusive",
"WdfDeviceInitSetPowerNotPageable",
"WdfDeviceInitSetPowerPageable",
"WdfDeviceInitSetPowerInrush",
"WdfDeviceInitSetDeviceType",
"WdfDeviceInitAssignName",
"WdfDeviceInitAssignSDDLString",
"WdfDeviceInitSetDeviceClass",
"WdfDeviceInitSetCharacteristics",
"WdfDeviceInitSetFileObjectConfig",
"WdfDeviceInitSetRequestAttributes",
"WdfDeviceInitAssignWdmIrpPreprocessCallback",
"WdfDeviceInitSetIoInCallerContextCallback",
"WdfDeviceCreate",
"WdfDeviceSetStaticStopRemove",
"WdfDeviceCreateDeviceInterface",
"WdfDeviceSetDeviceInterfaceState",
"WdfDeviceRetrieveDeviceInterfaceString",
"WdfDeviceCreateSymbolicLink",
"WdfDeviceQueryProperty",
"WdfDeviceAllocAndQueryProperty",
"WdfDeviceSetPnpCapabilities",
"WdfDeviceSetPowerCapabilities",
"WdfDeviceSetBusInformationForChildren",
"WdfDeviceIndicateWakeStatus",
"WdfDeviceSetFailed",
"WdfDeviceStopIdleNoTrack",
"WdfDeviceResumeIdleNoTrack",
"WdfDeviceGetFileObject",
"WdfDeviceEnqueueRequest",
"WdfDeviceGetDefaultQueue",
"WdfDeviceConfigureRequestDispatching",
"WdfDmaEnablerCreate",
"WdfDmaEnablerGetMaximumLength",
"WdfDmaEnablerGetMaximumScatterGatherElements",
"WdfDmaEnablerSetMaximumScatterGatherElements",
"WdfDmaTransactionCreate",
"WdfDmaTransactionInitialize",
"WdfDmaTransactionInitializeUsingRequest",
"WdfDmaTransactionExecute",
"WdfDmaTransactionRelease",
"WdfDmaTransactionDmaCompleted",
"WdfDmaTransactionDmaCompletedWithLength",
"WdfDmaTransactionDmaCompletedFinal",
"WdfDmaTransactionGetBytesTransferred",
"WdfDmaTransactionSetMaximumLength",
"WdfDmaTransactionGetRequest",
"WdfDmaTransactionGetCurrentDmaTransferLength",
"WdfDmaTransactionGetDevice",
"WdfDpcCreate",
"WdfDpcEnqueue",
"WdfDpcCancel",
"WdfDpcGetParentObject",
"WdfDpcWdmGetDpc",
"WdfDriverCreate",
"WdfDriverGetRegistryPath",
"WdfDriverWdmGetDriverObject",
"WdfDriverOpenParametersRegistryKey",
"WdfWdmDriverGetWdfDriverHandle",
"WdfDriverRegisterTraceInfo",
"WdfDriverRetrieveVersionString",
"WdfDriverIsVersionAvailable",
"WdfFdoInitWdmGetPhysicalDevice",
"WdfFdoInitOpenRegistryKey",
"WdfFdoInitQueryProperty",
"WdfFdoInitAllocAndQueryProperty",
"WdfFdoInitSetEventCallbacks",
"WdfFdoInitSetFilter",
"WdfFdoInitSetDefaultChildListConfig",
"WdfFdoQueryForInterface",
"WdfFdoGetDefaultChildList",
"WdfFdoAddStaticChild",
"WdfFdoLockStaticChildListForIteration",
"WdfFdoRetrieveNextStaticChild",
"WdfFdoUnlockStaticChildListFromIteration",
"WdfFileObjectGetFileName",
"WdfFileObjectGetFlags",
"WdfFileObjectGetDevice",
"WdfFileObjectWdmGetFileObject",
"WdfInterruptCreate",
"WdfInterruptQueueDpcForIsr",
"WdfInterruptSynchronize",
"WdfInterruptAcquireLock",
"WdfInterruptReleaseLock",
"WdfInterruptEnable",
"WdfInterruptDisable",
"WdfInterruptWdmGetInterrupt",
"WdfInterruptGetInfo",
"WdfInterruptSetPolicy",
"WdfInterruptGetDevice",
"WdfIoQueueCreate",
"WdfIoQueueGetState",
"WdfIoQueueStart",
"WdfIoQueueStop",
"WdfIoQueueStopSynchronously",
"WdfIoQueueGetDevice",
"WdfIoQueueRetrieveNextRequest",
"WdfIoQueueRetrieveRequestByFileObject",
"WdfIoQueueFindRequest",
"WdfIoQueueRetrieveFoundRequest",
"WdfIoQueueDrainSynchronously",
"WdfIoQueueDrain",
"WdfIoQueuePurgeSynchronously",
"WdfIoQueuePurge",
"WdfIoQueueReadyNotify",
"WdfIoTargetCreate",
"WdfIoTargetOpen",
"WdfIoTargetCloseForQueryRemove",
"WdfIoTargetClose",
"WdfIoTargetStart",
"WdfIoTargetStop",
"WdfIoTargetGetState",
"WdfIoTargetGetDevice",
"WdfIoTargetQueryTargetProperty",
"WdfIoTargetAllocAndQueryTargetProperty",
"WdfIoTargetQueryForInterface",
"WdfIoTargetWdmGetTargetDeviceObject",
"WdfIoTargetWdmGetTargetPhysicalDevice",
"WdfIoTargetWdmGetTargetFileObject",
"WdfIoTargetWdmGetTargetFileHandle",
"WdfIoTargetSendReadSynchronously",
"WdfIoTargetFormatRequestForRead",
"WdfIoTargetSendWriteSynchronously",
"WdfIoTargetFormatRequestForWrite",
"WdfIoTargetSendIoctlSynchronously",
"WdfIoTargetFormatRequestForIoctl",
"WdfIoTargetSendInternalIoctlSynchronously",
"WdfIoTargetFormatRequestForInternalIoctl",
"WdfIoTargetSendInternalIoctlOthersSynchronously",
"WdfIoTargetFormatRequestForInternalIoctlOthers",
"WdfMemoryCreate",
"WdfMemoryCreatePreallocated",
"WdfMemoryGetBuffer",
"WdfMemoryAssignBuffer",
"WdfMemoryCopyToBuffer",
"WdfMemoryCopyFromBuffer",
"WdfLookasideListCreate",
"WdfMemoryCreateFromLookaside",
"WdfDeviceMiniportCreate",
"WdfDriverMiniportUnload",
"WdfObjectGetTypedContextWorker",
"WdfObjectAllocateContext",
"WdfObjectContextGetObject",
"WdfObjectReferenceActual",
"WdfObjectDereferenceActual",
"WdfObjectCreate",
"WdfObjectDelete",
"WdfObjectQuery",
"WdfPdoInitAllocate",
"WdfPdoInitSetEventCallbacks",
"WdfPdoInitAssignDeviceID",
"WdfPdoInitAssignInstanceID",
"WdfPdoInitAddHardwareID",
"WdfPdoInitAddCompatibleID",
"WdfPdoInitAddDeviceText",
"WdfPdoInitSetDefaultLocale",
"WdfPdoInitAssignRawDevice",
"WdfPdoMarkMissing",
"WdfPdoRequestEject",
"WdfPdoGetParent",
"WdfPdoRetrieveIdentificationDescription",
"WdfPdoRetrieveAddressDescription",
"WdfPdoUpdateAddressDescription",
"WdfPdoAddEjectionRelationsPhysicalDevice",
"WdfPdoRemoveEjectionRelationsPhysicalDevice",
"WdfPdoClearEjectionRelationsDevices",
"WdfDeviceAddQueryInterface",
"WdfRegistryOpenKey",
"WdfRegistryCreateKey",
"WdfRegistryClose",
"WdfRegistryWdmGetHandle",
"WdfRegistryRemoveKey",
"WdfRegistryRemoveValue",
"WdfRegistryQueryValue",
"WdfRegistryQueryMemory",
"WdfRegistryQueryMultiString",
"WdfRegistryQueryUnicodeString",
"WdfRegistryQueryString",
"WdfRegistryQueryULong",
"WdfRegistryAssignValue",
"WdfRegistryAssignMemory",
"WdfRegistryAssignMultiString",
"WdfRegistryAssignUnicodeString",
"WdfRegistryAssignString",
"WdfRegistryAssignULong",
"WdfRequestCreate",
"WdfRequestCreateFromIrp",
"WdfRequestReuse",
"WdfRequestChangeTarget",
"WdfRequestFormatRequestUsingCurrentType",
"WdfRequestWdmFormatUsingStackLocation",
"WdfRequestSend",
"WdfRequestGetStatus",
"WdfRequestMarkCancelable",
"WdfRequestUnmarkCancelable",
"WdfRequestIsCanceled",
"WdfRequestCancelSentRequest",
"WdfRequestIsFrom32BitProcess",
"WdfRequestSetCompletionRoutine",
"WdfRequestGetCompletionParams",
"WdfRequestAllocateTimer",
"WdfRequestComplete",
"WdfRequestCompleteWithPriorityBoost",
"WdfRequestCompleteWithInformation",
"WdfRequestGetParameters",
"WdfRequestRetrieveInputMemory",
"WdfRequestRetrieveOutputMemory",
"WdfRequestRetrieveInputBuffer",
"WdfRequestRetrieveOutputBuffer",
"WdfRequestRetrieveInputWdmMdl",
"WdfRequestRetrieveOutputWdmMdl",
"WdfRequestRetrieveUnsafeUserInputBuffer",
"WdfRequestRetrieveUnsafeUserOutputBuffer",
"WdfRequestSetInformation",
"WdfRequestGetInformation",
"WdfRequestGetFileObject",
"WdfRequestProbeAndLockUserBufferForRead",
"WdfRequestProbeAndLockUserBufferForWrite",
"WdfRequestGetRequestorMode",
"WdfRequestForwardToIoQueue",
"WdfRequestGetIoQueue",
"WdfRequestRequeue",
"WdfRequestStopAcknowledge",
"WdfRequestWdmGetIrp",
"WdfIoResourceRequirementsListSetSlotNumber",
"WdfIoResourceRequirementsListSetInterfaceType",
"WdfIoResourceRequirementsListAppendIoResList",
"WdfIoResourceRequirementsListInsertIoResList",
"WdfIoResourceRequirementsListGetCount",
"WdfIoResourceRequirementsListGetIoResList",
"WdfIoResourceRequirementsListRemove",
"WdfIoResourceRequirementsListRemoveByIoResList",
"WdfIoResourceListCreate",
"WdfIoResourceListAppendDescriptor",
"WdfIoResourceListInsertDescriptor",
"WdfIoResourceListUpdateDescriptor",
"WdfIoResourceListGetCount",
"WdfIoResourceListGetDescriptor",
"WdfIoResourceListRemove",
"WdfIoResourceListRemoveByDescriptor",
"WdfCmResourceListAppendDescriptor",
"WdfCmResourceListInsertDescriptor",
"WdfCmResourceListGetCount",
"WdfCmResourceListGetDescriptor",
"WdfCmResourceListRemove",
"WdfCmResourceListRemoveByDescriptor",
"WdfStringCreate",
"WdfStringGetUnicodeString",
"WdfObjectAcquireLock",
"WdfObjectReleaseLock",
"WdfWaitLockCreate",
"WdfWaitLockAcquire",
"WdfWaitLockRelease",
"WdfSpinLockCreate",
"WdfSpinLockAcquire",
"WdfSpinLockRelease",
"WdfTimerCreate",
"WdfTimerStart",
"WdfTimerStop",
"WdfTimerGetParentObject",
"WdfUsbTargetDeviceCreate",
"WdfUsbTargetDeviceRetrieveInformation",
"WdfUsbTargetDeviceGetDeviceDescriptor",
"WdfUsbTargetDeviceRetrieveConfigDescriptor",
"WdfUsbTargetDeviceQueryString",
"WdfUsbTargetDeviceAllocAndQueryString",
"WdfUsbTargetDeviceFormatRequestForString",
"WdfUsbTargetDeviceGetNumInterfaces",
"WdfUsbTargetDeviceSelectConfig",
"WdfUsbTargetDeviceWdmGetConfigurationHandle",
"WdfUsbTargetDeviceRetrieveCurrentFrameNumber",
"WdfUsbTargetDeviceSendControlTransferSynchronously",
"WdfUsbTargetDeviceFormatRequestForControlTransfer",
"WdfUsbTargetDeviceIsConnectedSynchronous",
"WdfUsbTargetDeviceResetPortSynchronously",
"WdfUsbTargetDeviceCyclePortSynchronously",
"WdfUsbTargetDeviceFormatRequestForCyclePort",
"WdfUsbTargetDeviceSendUrbSynchronously",
"WdfUsbTargetDeviceFormatRequestForUrb",
"WdfUsbTargetPipeGetInformation",
"WdfUsbTargetPipeIsInEndpoint",
"WdfUsbTargetPipeIsOutEndpoint",
"WdfUsbTargetPipeGetType",
"WdfUsbTargetPipeSetNoMaximumPacketSizeCheck",
"WdfUsbTargetPipeWriteSynchronously",
"WdfUsbTargetPipeFormatRequestForWrite",
"WdfUsbTargetPipeReadSynchronously",
"WdfUsbTargetPipeFormatRequestForRead",
"WdfUsbTargetPipeConfigContinuousReader",
"WdfUsbTargetPipeAbortSynchronously",
"WdfUsbTargetPipeFormatRequestForAbort",
"WdfUsbTargetPipeResetSynchronously",
"WdfUsbTargetPipeFormatRequestForReset",
"WdfUsbTargetPipeSendUrbSynchronously",
"WdfUsbTargetPipeFormatRequestForUrb",
"WdfUsbInterfaceGetInterfaceNumber",
"WdfUsbInterfaceGetNumEndpoints",
"WdfUsbInterfaceGetDescriptor",
"WdfUsbInterfaceSelectSetting",
"WdfUsbInterfaceGetEndpointInformation",
"WdfUsbTargetDeviceGetInterface",
"WdfUsbInterfaceGetConfiguredSettingIndex",
"WdfUsbInterfaceGetNumConfiguredPipes",
"WdfUsbInterfaceGetConfiguredPipe",
"WdfUsbTargetPipeWdmGetPipeHandle",
"WdfVerifierDbgBreakPoint",
"WdfVerifierKeBugCheck",
"WdfWmiProviderCreate",
"WdfWmiProviderGetDevice",
"WdfWmiProviderIsEnabled",
"WdfWmiProviderGetTracingHandle",
"WdfWmiInstanceCreate",
"WdfWmiInstanceRegister",
"WdfWmiInstanceDeregister",
"WdfWmiInstanceGetDevice",
"WdfWmiInstanceGetProvider",
"WdfWmiInstanceFireEvent",
"WdfWorkItemCreate",
"WdfWorkItemEnqueue",
"WdfWorkItemGetParentObject",
"WdfWorkItemFlush",
"WdfCommonBufferCreateWithConfig",
"WdfDmaEnablerGetFragmentLength",
"WdfDmaEnablerWdmGetDmaAdapter",
"WdfUsbInterfaceGetNumSettings",
"WdfDeviceRemoveDependentUsageDeviceObject",
"WdfDeviceGetSystemPowerAction",
"WdfInterruptSetExtendedPolicy",
"WdfIoQueueAssignForwardProgressPolicy",
"WdfPdoInitAssignContainerID",
"WdfPdoInitAllowForwardingRequestToParent",
"WdfRequestMarkCancelableEx",
"WdfRequestIsReserved",
"WdfRequestForwardToParentDeviceIoQueue",
"WdfCxDeviceInitAllocate",
"WdfCxDeviceInitAssignWdmIrpPreprocessCallback",
"WdfCxDeviceInitSetIoInCallerContextCallback",
"WdfCxDeviceInitSetRequestAttributes",
"WdfCxDeviceInitSetFileObjectConfig",
"WdfDeviceWdmDispatchIrp",
"WdfDeviceWdmDispatchIrpToIoQueue",
"WdfDeviceInitSetRemoveLockOptions",
"WdfDeviceConfigureWdmIrpDispatchCallback",
"WdfDmaEnablerConfigureSystemProfile",
"WdfDmaTransactionInitializeUsingOffset",
"WdfDmaTransactionGetTransferInfo",
"WdfDmaTransactionSetChannelConfigurationCallback",
"WdfDmaTransactionSetTransferCompleteCallback",
"WdfDmaTransactionSetImmediateExecution",
"WdfDmaTransactionAllocateResources",
"WdfDmaTransactionSetDeviceAddressOffset",
"WdfDmaTransactionFreeResources",
"WdfDmaTransactionCancel",
"WdfDmaTransactionWdmGetTransferContext",
"WdfInterruptQueueWorkItemForIsr",
"WdfInterruptTryToAcquireLock",
"WdfIoQueueStopAndPurge",
"WdfIoQueueStopAndPurgeSynchronously",
"WdfIoTargetPurge",
"WdfUsbTargetDeviceCreateWithParameters",
"WdfUsbTargetDeviceQueryUsbCapability",
"WdfUsbTargetDeviceCreateUrb",
"WdfUsbTargetDeviceCreateIsochUrb",
"WdfDeviceWdmAssignPowerFrameworkSettings",
"WdfDmaTransactionStopSystemTransfer",
"WdfCxVerifierKeBugCheck",
"WdfInterruptReportActive",
"WdfInterruptReportInactive",
"WdfDeviceInitSetReleaseHardwareOrderOnFailure",
"WdfGetTriageInfo",
"WdfDeviceInitSetIoTypeEx",
"WdfDeviceQueryPropertyEx",
"WdfDeviceAllocAndQueryPropertyEx",
"WdfDeviceAssignProperty",
"WdfFdoInitQueryPropertyEx",
"WdfFdoInitAllocAndQueryPropertyEx",
"WdfDeviceStopIdleActual",
"WdfDeviceResumeIdleActual",
"WdfDeviceGetSelfIoTarget",
"WdfDeviceInitAllowSelfIoTarget",
"WdfIoTargetSelfAssignDefaultIoQueue",
"WdfDeviceOpenDevicemapKey",
"WdfDmaTransactionSetSingleTransferRequirement",
"WdfCxDeviceInitSetPnpPowerEventCallbacks",
"WdfFileObjectGetInitiatorProcessId",
"WdfRequestGetRequestorProcessId"]

def IsX86():
    return True


def SetWdfFuncName(baseAddr,funcNameList,funcNum,isX86):
    minFuncNum = None
    if len(funcNameList) > funcNum:
        minFuncNum = funcNum
    else:
        minFuncNum = len(funcNameList)
        
    for i in range(minFuncNum):
        if isX86:
            idc.MakeDword(baseAddr+4*i)
            idc.MakeName(baseAddr+4*i,funcNameList[i])
        else:
            idc.MakeQword(baseAddr+8*i)
            idc.MakeName(baseAddr+8*i,funcNameList[i])
    
    
    pass
    


isX86 = None
funcNum = None
wdfBase = None
myaddr = idc.AskAddr(0x14030,"address:")


if myaddr != None:
    if IsX86():
        isX86 = True
        funcNum = idc.Word(myaddr+0x14)
        wdfBase = idc.Dword(myaddr+0x18)
    else:
        isX86 = False
        funcNum = idc.Word(myaddr+0x1c)
        wdfBase = idc.Qword(myaddr+0x20)
    SetWdfFuncName(wdfBase,func_name,funcNum,isX86)
    

上面是x86版本,如果想改成x64版本,直接让IsX86()返回false即可。为什么那么麻烦呢,其实我主要是没有找到判断程序版本的idapython api,如果你找到了,可以留言告诉我

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容