dword

C++ EH Exception(0xe06d7363)----抛出过程

独自空忆成欢 提交于 2019-11-30 01:18:51
C++ EH Exception是Windows系统VC++里对c++语言的throw的分类和定义,它的代码就是0xe06d7363。在VC++里其本质也是SEH结构化异常机制。在我们分析用户崩溃的例子中经常会遇到它。一般情况下,遇到它,是我们代码里用throw抛出异常后没有处理导致程序崩溃。下面分析一下它的原理。 我们借助一段代码来跟踪和分析 class MyException { public: int nErr; char *szMessage; public: MyException(void) :nErr(0) , szMessage(NULL) { } MyException(int nerr,char *szMess) :nErr(nerr) , szMessage(szMess) { } ~MyException(void) { } }; int _tmain(int argc, _TCHAR* argv[]) { try { MyException me(1, "test exception"); throw me; } catch (MyException me1) { printf("err=%s\n",me1.szMessage); } } 将上述代码在VS2013里编译调试,转到汇编 91: try 92: { 01361797 mov dword ptr

Set-ItemProperty sets Registry Value as String on some systems instead of DWord, why?

左心房为你撑大大i 提交于 2019-11-30 00:49:52
问题 I try to create an item using Set-ItemProperty in PowerShell, which works on most systems: New-PSDrive -name HKCR -PSProvider Registry -root HKEY_CLASSES_ROOT Set-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue This creates a DWORD-value on most Windows 7 systems, but I have found one system where this creates a STRING-value instead, and I want to know: why? What could happen that the systems behave differently? All don't have that value already

汉字截断问题

孤人 提交于 2019-11-30 00:24:19
//判断汉字截断 #include <windows.h> #include <iostream> #include <string> using namespace std; #pragma comment(lib,"user32.lib") bool IsHanZiCorrupted( string &SeriesRecvString ) { DWORD len=strlen( SeriesRecvString.c_str() ); DWORD i=0; while( i<len) { if( IsDBCSLeadByte( SeriesRecvString[i] ) ) { i+=2; if( i> len ) { return true; } } else { ++i; } } return false; } int main () { //0x81:汉字内码扩展规范(GBK) 1stByte :0x81~0xFE; 2ndByte:0x40~0x7E; //if( (unsigned char)SeriesRecvString[i]>=0x81 ) 一定要转成无符号数才能正确比较 string str("c鑯d苦e命f三g国h无i双j楚k王l好m细n腰o宫p中q多r饿s死敌"); cout<<"str=\""<<str<<"\""<<endl; cout<<"len()=

微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案

妖精的绣舞 提交于 2019-11-29 23:53:48
由于原本的服务器出故障,在使用临时服务器的时候出现苹果无法加载小程序 出现 request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。 的问题 问题原因: 2017年1月1日起,苹果强制所有 app 满足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。 输入域名,通过苹果ATS检测发现临时服务器并不支持TSL1.2,不满足ATS特性,所以需要配置服务器,打开TSL1.2 域名检测网址: http://s.tool.chinaz.com/ats/ 解决步骤: 1.运行regedit打开注册表 2.启用TLS1.2 进入[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols] 找到TL2 1.1 和TLS 1.2 将里面Server和Client两项的值均改为 DisabledByDefault [值 = 0] Enabled [值 = 1] 如果没有TLS1.1,TLS 1.2就新建 右键->新建->项->新建TLS 1.1,TLS 1.2 TLS 1.1和TLS 1.2 右键->新建->项->新建Server, Client 在新建的Server和Client中都新建如下的项(DWORD

Crackme #1

冷暖自知 提交于 2019-11-29 21:51:17
NOP破解 输入姓名,序列号,先输入一个假的看看效果。 好的,注意这串字符串,说明我们的序列号错误, 由程序给的直观的一目,跟输入账号密码一样,一个判断,之后你懂。 载入OD,搜这串字符串,再查看反汇编。 直观可见,上边有一个JNZ跳转,把它NOP,就成功破解了。 序列号生成分析 查看JNZ上边的CALL 发现是一个比较,第一个PUSH是我们输入的序列号,第二个PUSH正确的序列号 那这些数据是从哪里来的呢,继续查看上边的CALL 查看压进去的参数,可以断定这个CALL是生成序列号的,那这些数据又是从哪里来的呢,继续查看上边的操作。 这样的循环操作,就不罗嗦了,直接定位到开始生成的位置。 0042FA79 |> \8D55 F0 lea edx,[local.4] 0042FA7C |. 8B83 DC010000 mov eax,dword ptr ds:[ebx+0x1DC] 0042FA82 |. E8 D1AFFEFF call Acid_bur.0041AA58 ; 获取用户名长度 0042FA87 |. 8B45 F0 mov eax,[local.4] ; 获取用户名首地址 0042FA8A |. 0FB600 movzx eax,byte ptr ds:[eax] ; 获取第一个字符的编码数字 0042FA8D |. F72D 50174300 imul dword

C++反汇编: 基础知识(7)

岁酱吖の 提交于 2019-11-29 19:16:17
title: 'C++反汇编: 基础知识(7)' date: 2019-09-07 12:18:41 tags: 汇编与反汇编 categories: 汇编与反汇编 copyright: true --- 反汇编(Disassembly),即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解反汇编语言对软件调试、漏洞分析、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面,该笔记整理了C++反汇编的一些常识. 变量与常量 数值类型变量: 整数,浮点数,等类型其反汇编结果基本相同. int main(int argc, char* argv[]) { int x = 10; int y = 20; int z = 0; z = x + y; return 0; } 反汇编结果如下,首先lea取地址,然后ECX=13,这里的13是因为我们有3个整数型变量,每个变量占用4个字节,所以4x3=12次,将EAX设置为CCCCCCC,并通过rep指令填充内存地址从[edi]指向的位置开始填充,填充14次,同样的也初始化了堆栈,接着通过mov赋值语句将内存地址分别初始化为指定的数值. 0040D709 |. 8D7D B4 lea edi, dword ptr [ebp-4C] 0040D70C

简单的c程序分析

对着背影说爱祢 提交于 2019-11-29 18:24:51
1.裸函数 c语言的普通函数中即使什么都不写,编译器在编译时也会给它加上一些汇编代码;比如开栈、返回等; 裸函数就是编译器什么都不管,一切都需要自己来处理; 裸函数的优点是自由度高,可以应用在钩子程序等地方; 例如:一个裸函数 #include "stdio.h" void __declspec(naked) method(){ } int main(int argc, char* argv[]) { method(); return 0; } 空的裸函数由于编译器不会给它添加返回指令,所以运行时会报错,可以自己在其中添加汇编指令; void __declspec(naked) method(){ __asm{ ret } } 然后反汇编时就有了ret指令: 1)裸函数实现加法运算 #include "stdio.h" //实现1+2+3+4+5+6 int __declspec(naked) method(int x, int y, int z){ __asm{ //保留之前的栈底 push ebp //开栈 ->注意十六进制数前最好加上0x防止被当成十进制数 mov ebp,esp sub esp,0x40 //保护现场 push ebx push esi push edi //填充缓冲区 lea edi,[ebp-0x40] mov ecx,0x10 mov eax

逆向破解之160个CrackMe —— 026

心不动则不痛 提交于 2019-11-29 05:59:08
CrackMe —— 026 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。 CrackMe简称CM。 程序下载地址: 点击我 来源 <-点击查看 编号 作者 保护方式 026 Colormaster Name/Serial(VB5) 工具 x32dbg KeyMake 开始破解之旅 ON.1 爆破方式 首先使用x32dbg打开026号程序,右键搜索字符串 这里我们看到了正确信息提示符,地位为 00403745 进入该地址,向上翻看来到最近的一个跳转处 该跳转当寄存器 ZF=0 时发生跳转,跳转到正确提示信息,我们将 004036EB 地址处的 JE 修改为 NOP ,F9运行,在输入框内输入任意数据 bingo ~ 破解成功 ON.2 内存补丁方式 继续向上翻看代码,此时我们在x32dbg中看到一个字符串对比函数 0040369C | 8D4D C4 | lea ecx,dword ptr ss:[ebp-0x3C] | 0040369F | FFD6 | call

修改window.external使JS可调用Delphi方法

时光总嘲笑我的痴心妄想 提交于 2019-11-29 04:42:09
原文地址:http://hi.baidu.com/rarnu/blog/item/4ec80608022766d663d986ea.html 在JS中,有一个比较特殊的对象,即window.external,用它可以调用浏览器提供的外部方法 一个很简单的例子就是将当前页添加到收藏夹 window.external.addFavorite("http://blog.sina.com.cn/yzdbs2008","桃红柳绿的新浪博客'); 这样写脚本就可以了。 那么如果我想自己定义external,以便在自己的软件内使用IE核心的浏览器作为UI容器,该如何做呢? 本文即是解决此问题。 一、制作TLB 在File | New | Other 菜单下,选择新建一个Type Library,这个向导在ActiveX页内。 然后按下图所示,新建一个接口,在接口下新建一个DoSearchData方法,这个方法即是将来需要添加到external中的。 完成添加后,点击保存为TLB按钮,将生成一个TLB文件,此处我将它命名为GetData.tlb 二、实现IDocHostUIHandler接口 这部分相对比较简单,从MSDN上找到相关的C++代码,把它转换成Delphi的即可。代码如下: unit DocHostUIHandler; interface uses Windows, ActiveX;

实验1 Windows汇编语言开发环境

时光毁灭记忆、已成空白 提交于 2019-11-28 22:50:31
Windows 、 Linux 等现代操作系统都运行于 CPU 的保护模式下。学习保护模式的汇编语言编程,要选用合适的编译、调试工具,编译工具决定了汇编程序的语法、结构,而调试工具则能够帮助我们迅速查找程序中的错误,提高调试效率。 本实验指导书采用 Microsoft 公司的 MASM 6.14 作为编译工具, Microsoft Visual C/C++ 作为开发调试环境。 1.1 汇编程序结构 和其他语言一样,汇编语言的源程序也要符合一定的格式,才能被编译程序所识别和处理。学习和掌握这些格式,是进行汇编编程的第一步。 1.1.1 一个显示字符串的汇编程序 下面是一个简单的汇编程序。 ;程序清单:test.asm(在控制台上显示一个字符串) .386 .model flat, stdcall option casemap:none ; 说明程序中用到的库、函数原型和常量 includelib msvcrt.lib printf PROTO C :ptr sbyte, :vararg ; 数据区 .data szMsg byte “ Hello World! ” , 0ah, 0 ; 代码区 .code start: mov eax, OFFSET szMsg invoke printf, eax ret end start 1.1.2 程序格式 在源程序 test.asm 中