1.怎么隐藏进程
2.Flutter 地图在携程的最佳实践
3.如何制作api地图如何制作api地图模板
怎么隐藏进程
下载HideWindowPlus,可以隐藏.和老板键一样.注意,要无毒的,网上有些挂马了.
多特软件站为上品.
老兄,你的那位老兄一定说错了.不过按你说的这么干其实也不是不行,只是你得联系九游让他们把奇迹的源码给你,然后你再编译加入隐藏进程的代码,否则不可能.
头文件如下:
class CHideProcss
{
public:
CHideProcss();
BOOL HideProcess();
virtual ~CHideProcss();
private:
BOOL InitNTDLL();
BOOL YHideProcess();
VOID CloseNTDLL();
VOID SetPhyscialMemorySectionCanBeWrited(HANDLE hSection);
HANDLE OpenPhysicalMemory();
PVOID LinearToPhys(PULONG BaseAddress, PVOID addr);
ULONG GetData(PVOID addr);
BOOL SetData(PVOID addr,ULONG data);
long __stdcall exeception(struct _EXCEPTION_POINTERS *tmp);
};
2。CPP文件如下
// HideProcss.cpp: implementation of the CHideProcss class.
//进程隐藏程序
// 要隐藏时调用HideProcess即可
//////////////////////////////////////////////////////////////////////
#i nclude "stdafx.h"
#i nclude "HideProcss.h"
#i nclude<windows.h>
#i nclude<Accctrl.h>
#i nclude<Aclapi.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xCL)
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xCL)
typedef LONG NTSTATUS;
typedef struct _IO_STATUS_BLOCK
{
NTSTATUS Status;
ULONG Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef struct _UNICODE_STRING
{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
#define OBJ_INHERIT 0xL
#define OBJ_PERMANENT 0xL
#define OBJ_EXCLUSIVE 0xL
#define OBJ_CASE_INSENSITIVE 0xL
#define OBJ_OPENIF 0xL
#define OBJ_OPENLINK 0xL
#define OBJ_KERNEL_HANDLE 0xL
#define OBJ_VALID_ATTRIBUTES 0xF2L
typedef struct _OBJECT_ATTRIBUTES
{
ULONG Length;
HANDLE RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
typedef NTSTATUS (CALLBACK* ZWOPENSECTION)(
OUT PHANDLE SectionHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
typedef VOID (CALLBACK* RTLINITUNICODESTRING)(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString
);
RTLINITUNICODESTRING RtlInitUnicodeString;
ZWOPENSECTION ZwOpenSection;
HMODULE g_hNtDLL = NULL;
PVOID g_pMapPhysicalMemory = NULL;
HANDLE g_hMPM = NULL;
OSVERSIONINFO g_osvi;
//---------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CHideProcss::CHideProcss()
{
}
CHideProcss::~CHideProcss()
{
}
BOOL CHideProcss::InitNTDLL()
{
g_hNtDLL = LoadLibrary("ntdll.dll");
if (NULL == g_hNtDLL)
return FALSE;
RtlInitUnicodeString = (RTLINITUNICODESTRING)GetProcAddress( g_hNtDLL,
"RtlInitUnicodeString");
ZwOpenSection = (ZWOPENSECTION)GetProcAddress( g_hNtDLL, "ZwOpenSection");
return TRUE;
}
//---------------------------------------------------------------------------
VOID CHideProcss::CloseNTDLL()
{
if(NULL != g_hNtDLL)
FreeLibrary(g_hNtDLL);
g_hNtDLL = NULL;
}
//---------------------------------------------------------------------------
VOID CHideProcss::SetPhyscialMemorySectionCanBeWrited(HANDLE hSection)
{
PACL pDacl = NULL;
PSECURITY_DESCRIPTOR pSD = NULL;
PACL pNewDacl = NULL;
DWORD dwRes = GetSecurityInfo(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL,
NULL, &pDacl, NULL, &pSD);
if(ERROR_SUCCESS != dwRes)
{
if(pSD)
LocalFree(pSD);
if(pNewDacl)
LocalFree(pNewDacl);
}
EXPLICIT_ACCESS ea;
RtlZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
ea.grfAccessPermissions = SECTION_MAP_WRITE;
ea.grfAccessMode = GRANT_ACCESS;
ea.grfInheritance= NO_INHERITANCE;
ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
ea.Trustee.TrusteeType = TRUSTEE_IS_USER;
ea.Trustee.ptstrName = "CURRENT_USER";
dwRes = SetEntriesInAcl(1,&ea,pDacl,&pNewDacl);
if(ERROR_SUCCESS != dwRes)
{
if(pSD)
LocalFree(pSD);
if(pNewDacl)
LocalFree(pNewDacl);
}
dwRes = SetSecurityInfo
(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,pNewDacl,NULL);
if(ERROR_SUCCESS != dwRes)
{
if(pSD)
LocalFree(pSD);
if(pNewDacl)
LocalFree(pNewDacl);
}
}
//---------------------------------------------------------------------------
HANDLE CHideProcss::OpenPhysicalMemory()
{
NTSTATUS status;
UNICODE_STRING physmemString;
OBJECT_ATTRIBUTES attributes;
ULONG PhyDirectory;
g_osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx (&g_osvi);
if (5 != g_osvi.dwMajorVersion)
return NULL;
switch(g_osvi.dwMinorVersion)
{
case 0:
PhyDirectory = 0x;
break; //2k
case 1:
PhyDirectory = 0x;
break; //xp
default:
return NULL;
}
RtlInitUnicodeString(&physmemString, L"\\Device\\PhysicalMemory");
attributes.Length = sizeof(OBJECT_ATTRIBUTES);
attributes.RootDirectory = NULL;
attributes.ObjectName = &physmemString;
attributes.Attributes = 0;
attributes.SecurityDescriptor = NULL;
attributes.SecurityQualityOfService = NULL;
status = ZwOpenSection(&g_hMPM, SECTION_MAP_READ|SECTION_MAP_WRITE, &attributes);
if(status == STATUS_ACCESS_DENIED)
{
status = ZwOpenSection(&g_hMPM, READ_CONTROL|WRITE_DAC, &attributes);
SetPhyscialMemorySectionCanBeWrited(g_hMPM);
CloseHandle(g_hMPM);
status = ZwOpenSection(&g_hMPM, SECTION_MAP_READ|SECTION_MAP_WRITE, &attributes);
}
if(!NT_SUCCESS(status))
return NULL;
g_pMapPhysicalMemory = MapViewOfFile(g_hMPM, FILE_MAP_READ|FILE_MAP_WRITE, 0, PhyDirectory,
0x);
if( g_pMapPhysicalMemory == NULL )
return NULL;
return g_hMPM;
}
//---------------------------------------------------------------------------
PVOID CHideProcss::LinearToPhys(PULONG BaseAddress, PVOID addr)
{
ULONG VAddr = (ULONG)addr,PGDE,PTE,PAddr;
PGDE = BaseAddress[VAddr>>];
if (0 == (PGDE&1))
return 0;
ULONG tmp = PGDE & 0x;
if (0 != tmp)
{
PAddr = (PGDE & 0xFFC) + (VAddr & 0xFFFFF);
}
else
{
PGDE = (ULONG)MapViewOfFile(g_hMPM, 4, 0, PGDE & 0xfffff, 0x);
PTE = ((PULONG)PGDE)[(VAddr&0xFF)>>];
if (0 == (PTE&1))
return 0;
PAddr=(PTE&0xFFFFF)+(VAddr&0xFFF);
UnmapViewOfFile((PVOID)PGDE);
}
return (PVOID)PAddr;
}
//---------------------------------------------------------------------------
ULONG CHideProcss::GetData(PVOID addr)
{
ULONG phys = (ULONG)LinearToPhys((PULONG)g_pMapPhysicalMemory, (PVOID)addr);
PULONG tmp = (PULONG)MapViewOfFile(g_hMPM, FILE_MAP_READ|FILE_MAP_WRITE, 0, phys &
0xfffff, 0x);
if (0 == tmp)
return 0;
ULONG ret = tmp[(phys & 0xFFF)>>2];
UnmapViewOfFile(tmp);
return ret;
}
//---------------------------------------------------------------------------
BOOL CHideProcss::SetData(PVOID addr,ULONG data)
{
ULONG phys = (ULONG)LinearToPhys((PULONG)g_pMapPhysicalMemory, (PVOID)addr);
PULONG tmp = (PULONG)MapViewOfFile(g_hMPM, FILE_MAP_WRITE, 0, phys & 0xfffff, 0x);
if (0 == tmp)
return FALSE;
tmp[(phys & 0xFFF)>>2] = data;
UnmapViewOfFile(tmp);
return TRUE;
}
//---------------------------------------------------------------------------
long __stdcall CHideProcss::exeception(struct _EXCEPTION_POINTERS *tmp)
{
ExitProcess(0);
return 1 ;
}
//---------------------------------------------------------------------------
BOOL CHideProcss::YHideProcess()
{
// SetUnhandledExceptionFilter(exeception);
if (FALSE == InitNTDLL())
return FALSE;
if (0 == OpenPhysicalMemory())
return FALSE;
ULONG thread = GetData((PVOID)0xFFDFF); //kteb
ULONG process = GetData(PVOID(thread + 0x)); //kpeb
ULONG fw, bw;
if (0 == g_osvi.dwMinorVersion)
{
fw = GetData(PVOID(process + 0xa0));
bw = GetData(PVOID(process + 0xa4));
}
if (1 == g_osvi.dwMinorVersion)
{
fw = GetData(PVOID(process + 0x));
bw = GetData(PVOID(process + 0x8c));
}
SetData(PVOID(fw + 4), bw);
SetData(PVOID(bw), fw);
CloseHandle(g_hMPM);
CloseNTDLL();
return TRUE;
}
// 隐藏进程的显示
BOOL CHideProcss::HideProcess()
{
static BOOL b_hide = false;
if (!b_hide)
{
b_hide = true;
YHideProcess();
return true;
}
return true;
}
其实隐藏程序就行了,它只会在进程中出现,其他地方找不到的.也不会影响星际.前题是你的电脑够牛.
Flutter 地图在携程的最佳实践
随着技术的快速发展,项目设计从单一的 Native 应用扩展到 Native+RN,再到如今的 Native+RN+Flutter。在携程,我们的疯狂电话源码业务主要基于 Flutter,这就需要在 Flutter 项目中嵌套使用地图。目前,实现这一目标的主要方法有两种:
1. 采用官方 Flutter 地图插件,但可能面临维护成本和定制需求的权衡。为了更好地定制 API 和快速修复问题,我们选择源码集成,主要在 flutter-boost 的混合工程中实践,以单引擎模式接入插件。
源码集成主要分为两个步骤:首先,从官方 demo 中获取插件源码,然后分别在 Flutter 和 Native(iOS/Android)端进行导入。Flutter 端执行 `flutter pub get`,导入插件源码,iOS 与 Android 则导入对应目录的源码分析视图代码。
地图插件的实现基础是 PlatformView,它允许原生组件嵌入 Flutter 页面。插件通过 MethodChannel 与 Native 通信,以 Map 为例,平台View 将 Native 地图嵌入 Flutter,并通过指定 viewId 初始化 BMFMapViewController,处理地图操作和事件传递。
在混合项目中,集成 PlatformView 需要处理不同平台的生命周期同步问题。例如,IOS 页面切换时可能会出现白屏,这是由于 Flutter A 页面跳转到 B 页面时,平台View 的生命周期与预期不符。为解决这个问题,可以在适当的地方调用 `surfaceUpdated` 方法,以确保同步。
Android 地图使用中也遇到过卡死和内存溢出问题。这些通常是由于生命周期管理不当导致的,如 context 对象回收。psy真实源码通过设置 `shouldAttachEngineToActivity` 为 `false`,使 Flutter 引擎独立于 Activity,避免了这些问题。
自定义地图中的 BitMap Marker 时,推荐利用地图插件提供的 iconData 参数,将文本和绘制后传递给 Native。在 Flutter 3 中,要注意 toImage 方法可能在 debug 环境下因为弱引用指针检查而被终止,但在 release 环境下正常工作。
在展示 Marker 时,可能需要调整地图的可见范围,这涉及 iOS 和 Android 的不同计算方式。随着业务需求的迭代,还需考虑地图大小与列表的配合,确保动画流畅。
总的来说,Flutter 地图插件在携程的最佳实践主要围绕如何在混合项目中集成、处理 PlatformView 的生命周期问题、自定义 Marker 和优化地图显示效果展开。军棋对战源码通过解决这些问题,我们实现了高效、稳定的地图功能集成。
如何制作api地图如何制作api地图模板
求助,如何用百度地图的API写地图?最新百度地图使用注意事项(使用中出现引擎故障首页错误,以下为注意事项)第一步是介绍BaiduMapAPI.framework
第二步是引入所需的系统库。
将CoreLocation.framework和QuartzCore.framework引入Xcode项目,
OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、
安全.框架.添加方法:在Xcode的项目中->:活动目标->;体格
阶段->;链接二进制和库,只需添加这些框架。
步骤3:环境配置
在目标->:构建设置->;将-ObjC添加到其他链接器标志中。
第四步,引入mapapi.bundle资源文件。
如果使用基础地图功能,需要添加该资源,否则地图无法正常显示。
Mapapi.bundle存储了定位的源码资本天眼资源、默认的pin标记视图和路线的关键点,以及矢量地图绘制所必需的资源文件。如果你不需要使用
内置图像显示功能,可以删除捆绑文件中的图像文件夹。您还可以根据自己的具体需要,任意替换或删除该包中image文件夹中的图像。
一块。
方法:选择项目名称,然后在右键菜单中选择“添加文件到”。
“项目名称”?,从baidumapapi.frameworkresources文件中选择mapapi.bundle文件,并选中“复制”
项”复选框,并单击“添加”按钮将资源文件添加到项目中。
步骤5:引入头文件。
使用SDK在类中引入头文件:
#导入
以上均引自百度地图文档。这里要注意第四条。有这些在。框架,但是它们仍然需要单独添加到项目中。
还需要在info.plist中添加(下面两个选一个,两个都用默认的NSLocationWheninuseUsagedescription添加):
NSLocationWhenNinuseUsagedescription,允许您在前台使用GPS时获取其描述。
NSLocationAlwaysusageDescription,允许永久使用GPS的描述
使用时,由于第四步没有操作,发动机初始化失败。百度的文档真的不方便。写这篇文章,希望能给将要使用百度地图的朋友提供一些帮助。
一、使用百度地图的注意事项
1.静态库是由ObjectC实现的,因此您需要确保至少有一个带有。mm后缀(您可以用。m后缀为。mm),或者在项目属性中指定编译方式,也就是Xcode的project->;编辑活动目标-构建->;GCC4.2-语言->;编译设置为"的源代码。objective-c
2.如果只在Xib文件中使用BMKMapView,而不在代码中使用,那么链接时编译器不会链接相应的符号。需要在项目属性中明确设置:在Xcode的项目中->:编辑活动目标->;构建->;链接-将-ObjC添加到其他链接器标志中。
3.申请授权密钥:新密钥和旧密钥不能通用,即新密钥只能在v2.0.2及以后版本的SDK中使用,旧密钥只能在v2.0.1及以前版本的SDK中使用;如果您还没有授权密钥,请申请它。
4.管理地图的生命周期:从2.0.0开始,BMKMapView增加了ViewwillApparel和ViewwillApparel方法来控制BMKMapView的生命周期,一次只能有一个BMKMapView接收回调消息。因此,在使用BMKMapView的viewController中,需要调用viewWillAppear和viewWillAppear方法中BMKMapView的对应方法,并处理delegate,代码如下:
-(void)viewWillAppear:(BOOL)animated{ [_mapViewviewWillAppear];_mapView.delegate=self//这里记住nil需要在不使用的时候设置,否则会影响内存的释放}-(void)viewwill消失:
-(BOOL)动画{ [_mapView视图将消失];_mapView.delegate=nil//不使用时,设置nil}
5.从iOSSDKv2.5.0开始,为了兼容iOS8的定位能力,做了相应的修改。开发者在使用过程中的注意事项如下:需要在info.plist中添加(下面两个选一个,两个都添加默认使用nslocationwhenninuseusagedescription):nslocationwhenninuseusagedescription,可以让你在前台使用GPS时获得对它的描述,并且可以让你永久使用GPS的描述。
6.在使用Xcode6开发SDK的过程中,需要在info.plist中添加:Bundledisplayname,其值不能为空(Xcode6新建项目没有这个配置,如果没有,管理器启动会失败)
7.从百度地图iOSSDKv2.5.0开始,支持和适配了arm,开发包的体积增大。但根据开发者在R//在应用程序即将后台时调用,停止所有与调用opengl相关的操作}-(void)applicationdidcombeactive:(uiApplication*)Application{ [bmkmapviewdiground];//应用程序返回前台状态时调用,回复地图的渲染和opengl相关操作}
二、使用百度地图需要介绍的库
(1)引入头文件
首先,复制头文件和静态库(。a)百度MapAPI提供的文件到你的项目目录,在Xcode中添加一个新的文件组,引入百度MapAPI提供的头文件(请使用Xcode4。x或以上平台)。添加以下代码#import
第二种方法:使用lipo命令合并。把一个设备和模拟器变成一个通用的。一个文件,并拖动合并的通用。项目中的一个文件。具体命令如下:lipo-createrelease-iphoneOS/libbaidumapapi.arelease-iphonesimulator/libbaidumapapi.a-outputlibbaidumapapi.a
第三种方式:
1.将API的libs文件夹复制到应用程序项目的根目录。
2.Xcode中的项目->:编辑活动目标->;构建->;链接-将-ObjC添加到其他链接器标志中。
3.在Xcode的项目中设置静态库的链接路径->:编辑活动目标->;构建->;搜索路径-将静态库目录添加到库路径中,例如"$(SRCROOT)/../libs/Release$(有效平台名称)编辑活动目标-构建->;GCC4.2-语言->;编译设置为"的源代码。objective-c
(3)介绍系统框架
百度地图SDK提供定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,所以你需要在你的Xcode项目中引入CoreLocation.framework和QuartzCore.framework,OpenGLES.framework,SystemConfiguration.framework,CoreGraphics.framework和Security.framework。添加方法:在Xcode的项目中->:活动目标->;构建阶段->;用库连接二进制,只需添加这些框架。
(4)介绍mapapi.bundle资源文件
Mapapi.bundle存储了定位的资源、默认的pin标记视图和路线的关键点,以及矢量地图绘制所必需的资源文件。如果不需要使用内置的图像显示功能,可以删除捆绑文件中的图像文件夹。您还可以根据您的具体需要,任意替换或删除该包中图像文件夹的图像文件。
添加方法:将mapapi.bundle复制到你的项目目录下,将bundle文件直接拖拽到Xcode项目左侧的Groups
gc.getLocation(pointAdd,function(rs){ varaddComp=rs.addressComponents;varadr="车辆:"+chepai+"rr"+"位于:"+addComp.province+","+addComp.city+","+addComp.district+","+addComp.street+","+addComp.streetNumber;//创建信息窗口,点击标注时显示标注对应的车牌号码以及当前地址varinfoWindow1=newBMap.InfoWindow(adr);marker.addEventListener("click",function(){ this.openInfoWindow(infoWindow1);});});