前言 本程序基于东灿的异常调试模块5.2部分版权信息如下: 1. 该模块功能是补足易错误管理器无法捕捉的异常。 2. 本模块可以截获许多异常,比如内存读写错误,非法汇编指令,算术异常,其他异常等等。 3. 本模块拥有try/catch的异常处理模型,支持多层嵌套,支持向上处理。允许用户自己设定跳过致命异常。 4. 并且支持易原错误管理器接管 5. 建议配合配套工具使用更加好用 正文: 程序原使用模块: 模块名 作者或工作室 用处 高级ApiHookEx 作者未知 HookApi,在模块中用于Hook:CreateRemoteThreadEx和CreateRemoteThread AppThreadVar 作者未知 进程内变量,线程内变量。可以在任意ec模块,任意DLL内调用,全部共享 callstack 作者未知 函数调用堆栈跟踪。 disasm 作者未知 支持MMX/SSE/SSE2/SSE3/3DNow取CPU指令长度 GetThisModuleHandle 作者未知 取出当前ModuleHandle e-try/catch(即new_SEH) 星锋工作室-东灿 SEH结构体等 精简内容 简化模块(即多模块合一,但互相不影响,并且删去了重复的API,数据类型等) 增加注释:对于代码,追加了更多的注释。 部分原理理解(很多都是本人自己的理解,可能不对,若有错误,欢迎指出):AppThreadVar:工作核心:tls线程局部存储(缩写为TLS。进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变量。在一个线程修改的内存内容,对所有线程都生效。这是一个优点也是一个缺点。说它是优点,线程的数据交换变得非常快捷。说它是缺点,一个线程死掉了,其它线程也性命不保; 多个线程访问共享数据,需要昂贵的同步开销,也容易造成同步相关的BUG。) 部分功能:它主要是为了避免多个线程同时访存同一全局变量或者静态变量时所导致的冲突,尤其是多个线程同时需要修改这一变量时。为了解决这个问题,我们可以通过TLS机制,为每一个使用该全局变量的线程都提供一个变量值的副本,每一个线程均可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。而从全局变量的角度上来看,就好像一个全局变量被克隆成了多份副本,而每一份副本都可以被一个线程独立地改变。 用途:动态TLS和静态TLS这两项技术在创建DLL的时候更加有用,这是因为DLL通常并不知道它们被链接到的应用程序的结构是什么样的。1. 如果应用程序高度依赖全局变量或静态变量,那么TLS可以成为我们的救生符。因而最好在开发中最大限度地减少对此类变量的使用,更多的依赖于自动变量(栈上的变量)和通过函数参数传入的数据,因为栈上的变量始终都是与某个特定的线程相关联的。如果不使用此类变量,那么就可以避免使用TLS。2. 但是在编写应用程序时,我们一般都知道自己要创建多少线程,自己会如何使用这些线程,然后我们就可以设计一些替代方案来为每个线程关联数据,或者设计得好一点的话,可以使用基于栈的方法(局部变量)来为每个线程关联数据 TLS分动态和静态,AppThreadVar我认为是动态TLS(调用了TlsAlloc函数) 相当于静态变量(我也只能理解到这里了) ApiHookEx和大部分的APIHook工作原理类似 e-try/catch说实话,这个模块我几乎不能理解原理(能理解的基本上是一些Api,比如MiniDumpWriteDump) 这个可能也是用于捕获异常,而且比较神奇的是,这个捕获到异常以后不会导致程序的退出,而是程序能够正常运行! 可以抛出自定义数值异常,由catch_int/catch_eq_int接收 可以抛出最后一次异常,让上层错误处理器处理 部分实例: try/catch测试:try/catch结果: 部分崩溃代码测试: 结果部分: 程序可以自己写出DMP文件: 更多功能请自己测试!!
2023-11-30 17:01:23 412KB 模块控件源码
1
SAP Business One 二次开发 产品成本核算 作业成本法
2023-11-29 09:44:27 2.83MB sapbusinessone 二次开发 作业成本法
1
这个资源是被测试过的,蓝牙模块可以和单片机进行通信,感兴趣的可以研究一下。
2023-11-28 22:52:00 29KB 主从模块
1
PHP搜索模块PHP搜索模块PHP搜索模块PHP搜索模块PHP搜索模块PHP搜索模块
2023-11-27 09:04:34 1014B PHP搜索模块
1
在我的工作经验中,在C#语言本身的学习上花了大量的时间,积累了一些经验,一些是在学习和工作中遇到的问题和解决办法分享出来,希望大家也能有收获。有些表述错误的地方,也希望及时指正。 (一)VSExxx.dll的使用 程序的运行以平台系统位数不匹配,64位系统上C#调用32位的C++ *.dll,其原因是该API是在32位系统下面开发的,在64位系统上面开发编译的时候需要将生成的目标平台设为X86,但是linux运行时会出现错误:An attempt was made to load a program with an incorrect format,生成的目标平台设为X86的程序须在32位
2023-11-25 23:32:10 88KB
1
基于stm32c8t6的蓝牙模块通信,打开手机蓝牙调试宝,连接蓝牙,输入01,灯亮
2023-11-25 10:55:24 6.11MB stm32
1
这是 Visual C++ 典型模块与项目实战大全 清华大学出版社 第11章 截屏工具(动态链接库+键盘钩子+光标捕获+类橡皮类CRectTracker) 源码,为了防止光盘丢失,特存于此。
1
C#开发典型模块大全………………很好的模块开发大全,典型的例子,值得好好研究!详细的代码值得好好探讨~
2023-11-25 05:02:17 39.46MB
1
如何下载固件 大家把 esp8266 模块连接电脑之后,解压我给的 esp8266 固件文件 1、安装驱动 打开驱动文件 运行 CH341SER.EXE,同时确保 esp8266 模块已经连接电脑 点击安装 如果弹出驱动安装失败,肯定是电脑和esp8266没有正确连接,就请打开 控制面板中的设备管理器,看看有没有端口显示 2、导入固件 运行 ESP8266Flasher.exe, 选择设备管理器中查到的端口号,我这里是 COM3 选择 Config 并导入固件 Wi-PWN.ino.CH.bin 的地址 我这里是:C:\Users\27511\Desktop\ESP8266\固件\Wi-PWN.ino.CH.bin 点击 Advanced ,其中 Baudrate 可在 esp8266 的背面找到具体数值,我这里是 9600 3、烧录 好了之后,现在回到工具的operation这个页面也就是第一个页面,点击 Flash 稍微等一等,直到光条拉满,就说明固件下载好了 ———————————————— 版权声明:本文为CSDN博主「霍格沃茨电气魔法师」的原
2023-11-24 14:47:39 177.13MB esp8266
1