关于'eh vector constructor/destructor iterator'的讨论及类的内存分布模型

[原理分析] 在用IDA反汇编C++程序的时候,经常会看到这样的语句:“call eh vector constructor iterator”或“eh vector destructor iterator”。 第一反应:这是在调用某个std::vector对象的构造函数或析构函数。但进一步的阅读发现跟std::vector的实现对不上号,就是说程序中并没有声明std::vector对象。 其实,这是调用new或delete导致的,即 T * tt = new T[100]; delete [] tt; 其中,T是自定义类,并且自定义了构造函数或析构函数。 说到这里估计有人就会恍然大悟了。道理就是这么简单! “eh vector constructor/destructor iterator”按字面上理解,就是:数组-构造-迭代器或数组-析构-迭代器。 它发生在创建一个自定义类的数组时,C++在分配内存后自动迭代调用类的构造函数以初始化每一个数组元素,或析构。 但,这里有一个问题:new的时候知道数组的大小,但是delete的时候没有指定数组个数,那么C++是怎么知道对多少个对象调用析构函数,并且释放多大内存呢? C++程序员大概都有这样的疑问。 答案就是C++在创建数组的时候,在分配内存的头四个字节保存数组大小,从第4个字节开始才是数组内容,返回的时候也是返回的第4个字节之后的内存,所以导致大家感觉不到数组长度。 下面以一个简单的程序示范一下数组的创建过程、销毁过程、类的构造和析构、对象的内存分布模型,编译器是VC6.0,相信很多人都是在windows上搞反汇编的。 [示范程序] class demo_B { public: demo_B(); ~demo_B(); void set_value(int a, float b); private: int a_; float f_; }; demo_B::demo_B() { a_ = 1; f_ = -1.0; } demo_B::~demo_B() { a_ = -1; f_ = 0.0; } void demo_B::set_value(int a, float b) { a_ = a; f_ = b; } void test_foo(int n) { demo_B * buffer = new demo_B[n]; delete [] buffer; } int main(int argc, char const *argv[]) { test_foo(10); return 0; } 关键函数void test_foo(int n);用IDA反汇编如下: ...

2013年5月22日 · 3 分钟 · Jid

source insight 3.5.x 算号器源代码

下面是本人用C写的source insight 3.5.x 算号器源代码,可以用VC、GCC或在线CodePad进行编译尝试: 效果图: 可执行程序: SI-Keygen-CMD 源代码: /* * By Apneng.Net @2013.05.21 * 声明:以下程序仅仅用于测试二进制可执行文件, * 并且仅仅用于同行间交流学习。 * 请勿用于商业目的。 */ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <time.h> unsigned int digit(unsigned int v, unsigned int i) { v = v%(int)pow(10, i); return v/(int)pow(10, i-1); } /*big random number*/ long lrand() { if (RAND_MAX == 0x7FFF) return (long)((rand() << 16)| rand()); else return rand(); } int main() { const unsigned int mask[32] = { 0X3039, 0X1E240, 0X5464E, 0X6F855, 0X8AA52, 0XA5BF5, 0X980D0, 0XBADD0, 0X980D0, 0X30448, 0X30379, 0X8AF93, 0X30379, 0X7B9, 0XF2F90, 0X9FF66, 0X8AA52, 0XF3A0, 0X30379, 0X8AA52, 0X62AF, 0X2AD, 0X71FDC, 0X5A124, 0XFFB2, 0XB96D8, 0X2B18E, 0X4CDE4, 0X71FDC, 0X1068C, 0X765C3A63, 0X745C3533 }; const int i_dat[10] = {0x96, 0x95, 0x10, 0x23, 7, 0x15, 8, 3, 16, 17}; srand((unsigned int)time(NULL)); while (1) { unsigned int d = 0; unsigned int mid_number = 0; char resp[128]; int i = 0; while(1) { d = lrand()%1000000; if (d < 100000 || d%111111 == 0) continue; for (i = 0; i < 32; ++i) { if (mask[i] == d) break; } if (i==32) break; } mid_number = d; for (i=0; i<6; ++i) { d = (i_dat[i]^(digit(mid_number, 6-i)+48)) + 4*d; } d = d%100000; if (d < 10000) continue; printf("Serial number: SI3US-%d-%d\n", mid_number, d); // try again printf("Do you want to have a try, again(y|n)? "); memset(resp, 0, 128); scanf("%s", resp); fflush(stdin); if (resp[0]=='y' || resp[0]=='Y') { continue; } else { printf("Good Bye!\n"); break; } } return 0; }

2013年5月21日 · 2 分钟 · Jid

[转]威海银滩海景房泡沫调查

威海银滩,一个美丽的“谎言”吹起的旅游地产泡沫,正暴露在阳光下。 ##空城银滩 银滩位于山东威海下属的乳山市,海岸线东西长21.3公里,南北宽3公里,气候适宜,年平均气温12.3℃,空气质量良好,沙滩细软,是中国AAAA 级旅游度假区。据官方提供的数据,银滩每年的旅游人数为412.5万人次。这也是当地政府大手笔开发海景房的原因之一。 但看似热闹的银滩,实际上却是一座人烟稀少的空城。 “银滩是一座‘鬼城’,冬天甚至整个海滩上一盏灯也不亮,即便是在旅游最旺的七八月份,大量房屋还是空置的。”威海市一家房产中介老板龙大兴(化名)告诉第一财经日报《财商》。 5月上旬,胶东半岛渐渐进入旅游人气旺季。宽阔的海边耸立着密密麻麻的住宅,但本报记者发现,不少一线海景房整栋楼甚至无一户入住。当地最具代表性的银滩大酒店的酒店主楼甚至暂停营业,只留了少量房间供客人入住。 在银滩从事了五年海景房销售的Mike告诉记者:“哪怕是在人最多的七八月,银滩海景房的入住率也不超过10%。” 较低的入住率直接导致了银滩海景房的出租价格也不高。一般而言,一套60平方米左右的海景房,月租金在400元左右。这在各地的海景房出租价格中也处于较低水平,据途家网CEO罗军统计,三亚的海景房的年租金收入在10万左右,海口的海景房年租金回报在2万到~3万。 无人气的背后,是2000年以来庞大的海景房建设。目前银滩已经密密麻麻修建了200多个商品房住宅小区。由于当地房管局并不公布相关信息,很难查证银滩海景房的确切开发量。 这些房子中的绝大部分都卖给了外地人,其中以北京、上海、东北等地人较多。 不过,到银滩的交通并不便利。以上海为例,只能乘坐飞机或者火车到威海,再从威海乘坐大巴到银滩,约100公里,需要花费1.5个小时。 沿着银滩沿海岸线的公路,一路上极少有车通过。由于人烟稀少,路上几乎没有出租车,若需要出行,只能乘坐当地的摩托车。 在海岸线沿线零星地分布着一些小型饭店,不过5月由于银滩人流很小,大多数小饭店并未开始营业。 银滩甚至没有固定的菜市场,每月分期在周边几个地段设有集市。例如农历初一、初六在常家庄和小陶家,初三、初九在宫家集,初五、初十在焉家。 “银滩的房子很难升值,因为没有发展趋势,没有配套设施无法生活。”龙大兴告诉记者。 在冬天,银滩更是人迹罕至,由于住户很少,冬天大多数银滩小区甚至没有供暖。“住的人少,电厂供热会赔钱,所以不供。”龙大兴告诉记者。 目前银滩200多个楼盘中,供暖的只有两个,分别是离海较远的松花江路上的山水人家和维利亚,靠西的碧海名居此前供暖,但现在已停止。 对于老人而言,住在银滩最大的困扰可能是没有配套的医院。一旦患病,老人们需要到银滩最西的医院。 目前银滩最邻近海岸线的地域已经几乎全部开发成海景房,但是历经多年开发之后,销售还在继续。 ##房价滞涨+巨量二手房抛盘 “银滩有两个客户群:养老休闲和纯投资人群。不过由于医保没有全国联网,真正意义上的养老地产很难实现;而投资人群又会加大当地的房价波动。” 上海乘星行行销服务机构总经理李骁告诉记者。 表面上看,近年来银滩房价涨幅明显。刘女士2000年左右的购买单价是1900元/平方米。曹先生在2009年底购买的一处房屋单价为4900元/平方米。而2013年5月销售的楼盘价格在7000~8000元/平方米。 同时,银滩的地价从前些年的一亩地5万元上涨到目前80万~100万。 但实际上,不少购房者正在亏本抛房。 “现在银滩二手房的价格在单价3000元/平方米左右,很多人是2008年5000元买的,现在3000元亏本出手。” Mike告诉记者,一手房的价格并不能看出银滩房屋的真实供求关系,而二手房交易价格更加客观。 本报记者走访多家中介发现,银滩二手房均价在3000元左右,甚至一些一线海景房二手房售价也在3000元到4000元/平方米。 甚至有一些极端的情况,Mike告诉记者:“我遇到的最便宜的情况是80平方米的房子,由于主人急着用钱,总价12万就出手了。” 目前,银滩囤积了大量待出售的二手房,并且价格低廉。 “现在银滩有200家中介,平均每家中介手里有200把钥匙,你算算银滩的二手房有多大的量。由于抛盘大,二手房都卖不上价。”Mike告诉记者。 “其实用同样的钱,可以在威海市内较为中心的地带购买海景房,并且房屋建造品质大大优于银滩。”龙大兴告诉记者。 目前,银滩一线海景房价格在70008000元/平方米,代表当地高端地产的香港平远城的价格在13000元/平方米(一线花园洋房)。而威海市内由于三面环海,在三大浴场附近有大量的海景房,以孙家疃附近为例,一线海景房价格在70008000元/平方米。华润地产开发的华润湾九里和宝利地产开发的凯旋公馆是当地高端房产的代表,价格在1万元/平方米以上。刚修建不久的国际海景公寓目前价格在2万元/平方米。 房价滞涨,大量的待售二手房,对于投资而言显然不是一个好的信号。 ##烂尾楼盘:过期4年仍不见交付 除了投资回报上可能没有想象的那么高,一些楼盘还存在烂尾的风险。 五月初的银滩还有些微冷,一片杂草丛生的荒地边上屹立着蓝色玻璃结构的台湾城售楼处,门口依稀可见从施工场地吹过来的黄土。 在售楼处内,记者看到了海基会会长江丙坤在此处考察的照片。这曾经是银滩最大手笔开发的楼盘,由一家台湾开发商开发。建设初期,开发商花费3亿~4亿元修建了银滩一处大型人造景观——潮汐湖。这也是当地政府重要的工程景观。 售楼处一名留守的销售人员告诉记者,台湾城已经超过半年没有发工资了。 杨先生夫妇专程从上海赶到银滩,准备看他们过了交房期4年未交房的海景房。此前的4年,每年开发商都会寄送给杨氏夫妇一封信,信的内容是房屋交付要延期。 杨先生夫妇购买的住宅在台湾城的18号楼,根据合同是精装修。记者来到18号楼,房子是盖起来了,但是里面没有装修,周围一人多高的荒草丛生。 此前接待杨先生夫妇的销售人员早已不在台湾城售楼处,而此人电话也早已停止使用。 售楼处的销售人员告诉记者,现在只需要几千万就能把剩余工程全部完工。“但是,老板在北京南三环还有一个项目也发生了烂尾,现在要等北京项目解决后才能顾及到银滩项目。” 记者到乳山房管局银滩办事处查证,工作人员告诉记者,此楼盘的总产证尚未办理。 Mike告诉记者,银滩出现的烂尾楼盘不止台湾城一个,长城文化苑、金鼎大厦、万豪庭海苑、银滩之心、龙韵花园也都出现过烂尾楼盘。 (实习记者 王丽纳 袁秋晗对本文亦有贡献) 转自:第一财经网

2013年5月18日 · 1 分钟 · Jid

极速破解sublime text全部版本

##摘要 本篇文章介绍一种非常直接、快速地破解Sublime Text编辑器的方法,并且这里的方式适用于Sublime Text2/3(以下为了方便简称为ST2,ST3)的所有版本和几乎所有平台(Win32,Win64,Linux32,Linux64,除了MacOS)。下面是破解后的效果图: ST2217-Windows ST3008-Windows ST3033-Linux ##准备工具 十六进制编辑器,推荐WinHex,或其他可以进行十六进制搜索的任意编辑器,比如Vim,Sublime Text, UltraEditor等。 可以用正则表达式进行文本搜索的编辑器,比如Vim,Sublime Text等。 汇编器,windows下可以用OllyDBG或IDA,Linux下用objdump就可以。 ##破解过程 下面的方法是通用的,适用于Windows或Linux上的所有Sublime Text,在方法上仅仅是开始的时候有点区别。下面分别针对Windows系统和Linux系统做详细说明: ###<0>下载并安装sublime_text 自己到官网上下载Sublime Text 2 或 Sublime Text 3, 然后安装。 安装后把可执行程序备份一遍。比如把sublime_text.exe复制一份为sublime_text.orig.exe。 ###<1.1>sublime_text for Windows 用OllyDBG把sublime_text.exe加载起来,然后把OllyDBG里面的文字全部复制出来,保持为st-crack.asm。(这是为了进行搜索) ###<1.2>sublime_text for Linux 先要知道你的ST的真正的可执行程序在哪里: $ which sublime_text | xargs ls -l >> ..... 上面的代码告诉你真正的ST在哪里。下面复制一份到Home下面 cp ... 用objdump分析上面找到的ST objdump -d ST_file > st-crack.asm ###<3>分析st-crack.asm 用编辑器打开st-crack.asm,然后搜索这个正则表达式 (.*<je>.*\n.*<cmp>.*\n){8,} 上面这个正则其实是搜索一大片的 je.... cmp... je... cmp... je... cmp... je.... cmp... je... cmp... je... cmp... 因为找到的这段函数是验证序列号的最重要的函数(这个规律是我在调试的时候发现的,对ST2,ST3都适用。),这个函数用于判断注册码是否正确,返回值是一个布尔值,只要改了这个函数的返回值,ST就被完美爆破了。 ###<4>着手修改上面的函数的返回值 上面已经找到了关键函数段,往下找,一直找到函数返回: C3 retn, 然后往上数两行,看到mov al, bl,就是它了,记下它的二进制串(一定以自己搜出来的字符串为准): ...

2013年5月17日 · 1 分钟 · Jid

ST3 Beta完美破解

昨天刚看到Sublime text释放出了ST3的Beta版,顿时蠢蠢欲动,可惜钱包干瘪, 目前的Beta只对注册用户试用。虽然试用版不久就会放出来,但我实在按捺不住试用的心情,所以就用OD动手了。 下面是实现破除注册界面的简单步骤(下面的地址只针对Beta3008版): 找个能用的16进制编辑器,比如Hex Workshop, WinHex, Vim等 跳到08CD10位置,把F7 FF 8B C3改为F7 FF 33 C0 . 其实只改了两个字节。 另存即可使用了。 以上的过程只针对Win32的版本做了尝试,其他版本还没有试。但是不同的版本用的函数应该是一样的,所以这里把相邻的几个字节都列了出来,以方便在其他的版本上尝试查找修改。 08CCF8: F7FF 8D4D C0E8 5437 08CD00: F7FF 8D4D A8E8 4C37 08CD08: F7FF 8D4D 90E8 4437 08CD10: F7FF 33C0 E8E9 D715 08CD18: 00C3 6A00 B8C1 5863 08CD20: 00E8 FAD7 1500 A1A4 08CD28: F071 00BF 98F0 7100

2013年1月31日 · 1 分钟 · Jid

Sublime Text2 破解

网上已经有关于sublime text2的破解教程,可以注册无限使用账户同时可以去掉UNREGISTERED字样,大家可以尝试一下,Sublime Text 2 破解 。 但是,本文提供一个不需要注册码即可跳过“注册提醒”的简便方法。 ST2真是厚道,可以几乎无期限试用,并且源程序也没有进行加密。所以我闲来没事对ST2进行了反汇编。在ST2注册前,在保存文件的时候偶尔弹出建议进行注册的对话框,通过反汇编代码可以很简单的跳过这一步。如此,即使不用注册码就可以完全使用ST2。 下面是操作步骤: 从官网下载并安装源程序 ST2 在ST2安装目录下找到sublime_text.exe,先对它做个备份,复制为sublime_text.exe.BAK, 放在原目录. 用16进制编辑器编辑sublime_text.exe,把0CBB98行的 0000 0F85 9300 0000 改为: 0000 E994 0000 0090 保存即可使用了~ PS. 对上面的第三点需要加点说明:“16进制编辑器”有哪些? 首先Vim可以(虽然Vim不是专用的16进制编辑器),其次是WinHex等很多专用16进制编辑器。 对于专用16进制编辑器,可以直接打开sublime_text.exe执行第三部步;如果是用Vim则需要先用命令!%xxd转成二进制,修改sublime_text.exe,然后再用!%xxd -r转回来,最后再保存。(一定是这个顺序,否则就会变成无法执行的文件) 下面为了让大家偷懒,我把个人做的破解放到**网盘上**,大家可以下载后复制到本地的安装目录下使用(对应目前的最新程序Version2.0.1,Build2217)。

2012年11月21日 · 1 分钟 · Jid

Hello world

Read Jekyll Quick Start Complete usage and documentation available at: Jekyll Bootstrap Update Author Attributes In _config.yml remember to specify your own data: title : My Blog =) author : name : Name Lastname email : blah@email.test github : username twitter : username The theme should reference these variables whenever needed. Sample Posts This blog contains sample posts which help stage pages and blog data. When you don’t need the samples anymore just delete the _posts/core-samples folder. ...

2012年10月8日 · 1 分钟 · Jid