FIFA07传奇难度的解锁,可以说是所有FIFA07玩家的终极目标.但是如果想以正常方式对其进行解锁,绝对是一件耗时耗力的工作.所以在这里我打算通过分析游戏存档文件的十六进制代码的方式,一步一步地找到解锁传奇难度的钥匙.在这一过程中,也实现了对游戏所有隐藏项目的彻底解锁. 图1  FIFA07游戏封面 一.收集游戏中必要的信息 在这里先不着急分析游戏的十六进制代码,需要先对游戏需要解锁的内容有一个大概的了解.首先游戏需要解锁的有两个大项的内容,一个是游戏中的"球迷商店",另外一个是&q…
一.前言 <冠军足球经理>系列作为一款拟真度极高的足球经营类游戏,赢得过无数赞誉,而CM4可以说是这个传奇的起点.但是在游戏安装过程中,当用户输入完序列号之后,程序并不会对用户的输入进行真伪判断,只有等到安装完毕,进入游戏之后,通过游戏是否正常显示才能够得知.而如果遇到用户不小心输入错误的情况,那么只能卸载游戏重新安装,这就会造成很大的麻烦. 为解决这个问题,这次的研究会以两篇文章的篇幅通过两种方式对这个游戏进行逆向分析,一种是采用常见的"爆破"手段,也就是本文所讨论的方法…
我在2014年7月1日参加了猎豹移动(原金山网络)反病毒工程师的电话面试,但是很遗憾,由于我当时准备不足,加上自身水平不够,面试官向我提出的很多技术问题我都没能答出来(这里面既有基础类的问题,也有比较高深的问题),结果没能通过那次的面试.痛定思痛,我认认真真总结出了当时向我提出的所有问题,一共是十多条,我会分为几篇文章来进行剖析.并且根据问题的难易程度,由浅入深进行排序.参考了大量的相关资料,给出了业界较为权威的书籍上的答案,可能对于某些问题,会同时摘录几本书的内容,并且给出知识扩展,以更为全面…
前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 简单来说的话,就是根据树形结构把相似的对象进行组合,然后表示该部分是用来做啥的.在中有个很形象的例子,就是电脑中的 文件系统. 文件系统由目录和文件组成.每个目录都可以装内容.目录的内容可以是文件,也可以是目录.按照…
前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式.本篇则来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 简单的来说就是对外提供一个简单接口,隐藏实现的逻辑.比如常用电脑的电源键,我们只需按电源键,就可以让它启动或者关闭,无需知道它是怎么启动的(启动CPU.启动内存.启动硬盘),怎么关闭的(关闭硬盘.关闭内存.关闭CPU)…
前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式.工厂方法和抽象工厂模式.本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式. 建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 简单的来说就是将一个复杂的东西抽离出来,对外提供一个简单的调用,可以在同样的构建过程创建不同的表示.和工厂模式很相似,不过相比而言更加注重组件的装配. 这里用一个示例来进行说明. 我们一天…
首先对原型模式进行一个简单概念说明:通过一个已经存在的对象,复制出更多的具有与此对象具有相同类型的新的对象. 在理解Java原型模式之前,首先需要理解Java中的一个概念:复制/克隆. 在博文<Java总结篇系列:java.lang.Object>一文中,对Java中的clone()方法进行了一定的阐述.同时,我们需要知道,Java中的对象复制/克隆分为浅复制和深复制. 一.浅复制: 我们知道,一个类的定义中包括属性和方法.属性用于表示对象的状态,方法用于表示对象所具有的行为.其中,属性既可以…
摘要: 在MVVM成熟之前MVP模式在Android上有被神化的趋势,笔者曾经在商业项目中从零开始大规模采用过MVP模式对项目进行开发.在使用MVP模式进行开发的时候发现项目的结构模式对开发是有一定的影响的,在这里笔者会对这一问题进行探讨.希望通过这篇blog能让读者了解如何使用MVP模式搭建一个功能完善的MVP模式开发框架,避免一些笔者认为比较严重的问题. 为什么要使用MVP模式 在传统的Android开发中,我们一般是使用MVC模式进行开发的.传统MVC模式介绍: View: 视图层,对应x…
一.前言 本文是逆向分析CM4系列的最后一篇,我会将该游戏的序列号验证机制分析完毕,进而编写出注册码生成器. 二.分析第二个验证循环 延续上一篇文章的内容,来到如下代码处: 图1 上述代码并没有特别需要注意的地方,只是知道了接下来的循环需要执行4次.下面就是重要的验证部分: 图2 这是注册码中第二组四个字符的生成代码,主要是利用[ebp+var_20]进行运算,将结果作为字符串的偏移值,从而得到注册码.回顾一下,这里的[ebp+var_20]是之前运算所得到的余数,可见这个游戏的验证过程中的取余…
一.前言 在上一篇文章的最后,我已经找出了关键的CALL语句,那么这篇文章我就带领大家来一步一步地分析这个CALL.我会将我的思路完整地展现给大家,因此分析过程可能略显冗长,我会分为两篇文章进行讨论.在整个分析过程中,我也会把我所遇到的瓶颈展示出来,毕竟我在实际分析时,也并不是一帆风顺的,遇到瓶颈属于正常情况,关键是在于应该怎么解决.考虑到绝大部分读者手中应该是没有CM4这款游戏,并没有实际动手进行逆向分析的机会,所以我在文章中添加了足够多的解释与截图,让大家仅仅是看这篇文章,就能够领会逆向分析…
Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在企业应用中我们以SRMSUS 为例. 系统由以下结构组成   Controller来处理系统事件及数据过程 Views 是页面/子页面 Page 是带有逻辑过程的页面,之前介绍过 Page Fragments ,例如很多页面需要header及footer,这个东西就是一些代码片断,可以被出入到需要的…
在程序设计中,经常会遇到一个对象需要调用另外一个对象的某个方法以达到某种目的,在此场景中,存在两个角色:请求发出者和请求接收者.发出者发出请求,接收者接收请求并进行相应处理.有时候,当需要对请求发出者和接收者进行解耦,即发出者中不能含有接收者的引用,如请求需要进行排队操作,或可能需要对请求进行取消操作等,在此类场景中,请求发出者此时若还是直接操作接收者,将无法满足此类需求.此时,我们可以使用命令模式. 在命令模式中,当一个对象请求另一个对象其调用方法时,不和被请求的对象直接打交道,而是把这种请求…
一.交互模式 #python Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 如上所示: 其中”>>&…
模板方法模式需要开发抽象类和具体子类之间的协作.抽象类负责给出一个算法的轮廓和骨架,子类则负责给出这个算法的各个逻辑步骤.代表这些具体逻辑步骤的方法称做基本方法(primitive method):而将这些基本方法汇总起来的方法叫做模板方法(template method).子类重写抽象类中的抽象方法,通过调用抽象类中的模板方法中的抽象方法,实现对子类基本方法的调用. 直接来看一个例子: 1.定义一个抽象类,及类中的模板方法和抽象方法: abstract class AbstractCalcul…
前面的博文中分别介绍了Java设计模式中的创建型模式和结构型模式.从本文开始,将分别介绍设计模式中的第三大类,行为型模式.首先我们了解下分为此三大类的依据. 创建型模式:主要侧重于对象的创建过程: 结构型模式:主要侧重于处理类或对象的组合: 行为型模式:主要侧重于类或对象之间的交互以及职责分配. 首先了解下策略模式的概念:定义了多个算法,并将它们封装起来(一般的是每个算法封装成一个单独的类),让算法独立于客户端而可以单独变化. 具体可以看一下下面的例子(以计算加.减.乘为例): 1. 对加.减.…
在探讨Java组合模式之前,先要明白几个概念的区别:继承.组合和聚合. 继承是is-a的关系.组合和聚合有点像,有些书上没有作区分,都称之为has-a,有些书上对其进行了较为严格区分,组合是contains-a关系,聚合是has-a关系. 组合方式中被组合的对象生命周期不能超过整体,一般写代码时是直接在整体类的构造方法中创建被组合类的对象.如人和手之间的关系,人都没了,还何来手? 聚合方式中对于对象的生命周期则没有此类限制,一般可以在聚合类的构造函数中通过外部传参以赋值给整体(或通过其他set等…
在实际类设计过程中,有时会遇到此类情况:由于实际的需要,某个类具有两个或两个以上的维度变化,如果利用继承将每种可能的变化情况都定义成一个类,一是会导致类膨胀的问题,二是以后不太好维护和并且违背类的设计原则.那么面对这种情况,类改如何设计呢?这就是本文所要讲到的桥接模式. 简单的讲,桥接模式是指:将抽象和行为划分开来,从而将各个可能变化的维度分离开来,各自独立成一个类,但是能够动态的组合. 貌似有点抽象,下面通过一个简单的例子来理解桥接模式. 我们可以通过Email发送信息,也可以手段短信发送信息…
张三自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了.于是拿着一点小资本,想着做点小生意.瞅着眼前的餐饮行业还不错,于是打算开一家餐馆.开参观可不是一件容易的事,仅仅行政类的审批流程就不少.至少包括办理卫生许可证,办理税务登记,办理工商登记等. 我们先来看一下行政审批接口: interface Executive{ public void approve(); } 卫生局类的定义: class HealthOffice implements Executive{ @Over…
时代在发展,我们发现,现在不少明星都开始进行微访谈之类的,有越来越多的参与捐赠等.新的一天开始了,首先看下新的一天的日程安排: interface Schedule{ public void weiTalk(); public void donation(); } Schedule接口定义了今天的形成安排,主要包括微访谈和捐款.那么看一下实现此接口的明星类定义: class Star implements Schedule { @Override public void weiTalk() {…
关于建造者模式网上有很多文章,也有些不同的理解.在此结合网上其他文章对建造者模式进行总结. 总体说来,建造者模式适合于一个具有较多的零件(属性)的产品(对象)的创建过程.根据产品创建过程中零件的构造是否具有一致的先后顺序,可以将其分为如下两种形式. 一.通过Client.Director.Builder和Product形成的建造者模式 Builder负责Product类对象的具体过程构建,Director负责指导Build,要求Builder按照其指定的顺序去完成Produt的构造.最后通过Bu…
理解 1.第二范式的侧重点是非主键列是否完全依赖于主键,还是依赖于主键的一部分.第三范式的侧重点是非主键列是直接依赖于主键,还是直接依赖于非主键列.  2. 反模式 范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦. 然而,通过数据库范式化设计,将导致数据库业务涉及的表变多,并且可能需要将涉及的业务表进行多表连接查询,这样将导致性能变差,且不利于分库分表.因此,出于性能优先的考量,可能在数据库的结构中需要使用反模式的设计,即空间换取时间,采取数据冗余的方式避免表之间的关联查询.…
[译者注] Process Monitor是一款非常著名的系统进程监视软件.总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统中所有文件的操作过程,而Regmon用来监视注册表的读写操作过程.用户可以利用Process Monitor对系统中的文件系统以及注册表操作等方面同时进行监视和记录.通过监控系统中相应位置的变化,对于帮助诊断系统故障或是发现恶意软件.病毒或木马来说,非常有用.这是一款先进的 Windows 系统和应用程序监视工…
本书基本信息 作者:冀云(编著) 出版社:人民邮电出版社 出版时间:2012-6-1 ISBN:9787115280640 版次:1 页数:265 字数:406000 印刷时间:2012-6-1 开本:16开 纸张:胶版纸 印次:1 包装:平装 定价:39.00元   书籍封面 内容简介 <C++黑客编程揭秘与防范>旨在通过简单的语法知识及常用的系统函数编程,完成一些有特定功能的安全工具,让读者对系统知识等各方面有一个全面的了解,并且在笔者的带领下一步步完成书中的实例.本书主要内容为:第1章了…
"65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?" "那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆宣传,暴击单身狗." 像这种 65 哥通过朋友圈发布消息,关注 65 哥的好友能收到通知的场景叫做「发布/订阅机制」. 今天不聊小姐姐,深入了解下 「Redis 发布/订阅机制」.的原理与实战运用. Redis 通过 SUBSCRIBE,UNSUBSCRIBE和PUBLISH 实现发布订阅消息传递模…
单击第一个图标,第一个图标突出显示,单击第二个图标,第一个变灰,第二个突出显示,反之一样.单击history读取历史记录. Controller ZCL_SUS_C_ORDER_CHANGE 1.    DO_INIT method DO_INIT. *CALL METHOD SUPER->DO_INIT *    . if  ZORDERCHANGEMODEL is initial. create object ZORDERCHANGEMODEL. select * from usr02 in…
大年三十了,选在今天开启Blog,就是为了克服拖延症! Windows桌面程序,多年的执念,到现在一直不会写,再拖拉谁知道又要拖几年? 特此立下目标: 基本掌握C# winform 半年内可以做出一些以前想做的小程序 一年内可以快速开发出想要的程序(Guess:大概需要有很多模块类的积累吧,后台管理/登录验证/数据库操作/权限框架等等) 从以前的经历来看,直接扔一本入门书,第一章可以看个十来遍,第二章大概最多看一半并且两三遍,第三章之后全是新的! 所以,这次准备针对自身特点,从勾起自己的兴趣入手…
初次接触逆向工程 不知不觉就来到了2013年的9月份,学校开学了,我开始正式体验研究生的生活了.按道理来说,硕士研究生是需要围绕在导师身边,每天朝九晚五地去实验室做项目的.不过我们老师没有项目,也不要求我去实验室,这也就使得我可以有更多的时间来学习自己喜欢的东西.不过尽管没有项目,老师还是给了我翻译的任务,整个研一阶段,他找了两本英文书籍,是与计算机图形图像相关的,让我们翻译.虽说翻译的工作到最后也都不了了之了,但是多多少少对我的英语水平,有了一定的提升作用,于是也就在研一的两个学期,一口气把四…
作者:软件猫 日期:2016年12月6日 转载请注明出处:http://www.cnblogs.com/softcat/p/6135195.html 在朋友的怂恿下,终于开始学 Unity 了,于是有了这篇文章. 本文用一个控制小人移动的示例,讲述如何在 Unity 中实现 Redux 架构. 关于 Flux.单向数据流是什么,请参考 阮一峰 大大的文章 http://www.ruanyifeng.com/blog/2016/01/flux.html Redux 是什么鬼 Reflux是根据 F…
在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建.随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类.这与设计模式中的开闭原则有些违背.因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了,不需要修改之前的代码.如此可以较好解决工厂方法模式中的问题. 常见经典写法如下(以发送邮件和短信为例): 1. 定义邮件类和短信类具有的共同接口: 与工厂方法模式中定义相同. 2…
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了基于Ids4客户端授权的原理及如何实现自定义的客户端授权,并配合网关实现了统一的授权异常返回值和权限配置等相关功能,本篇将介绍密码授权模式,从使用场景.源码剖析到具体实现详细讲解密码授权模式的相关应用. .netcore项目实战交流群(637326624),有兴趣的朋友可以在群里交流讨论. 一.使用场景? 由于密码授权模式需要用户在业务系统输入账号密码,为了安全起见,对于使用密码模式的业务系统,我们认为是绝对可靠的,不存在…