逆向C++
文章平均质量分 93
AlbertLi
不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DebuggerX0.3版本【主要新功能已完成】
1、新增了附加功能(如图1):2、能直接用IDA导出或者COPY出来的函数信息了:测试调试都没有问题:,下一步完善一下通知的机制,让其更加灵活。原创 2012-12-31 21:16:29 · 881 阅读 · 1 评论 -
通过逆向学习软件设计(1)
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.----- Eilam, Eldad &原创 2013-01-29 22:17:57 · 1415 阅读 · 0 评论 -
通过逆向学习软件设计(2)
好久没有更新这个系列了(这个系列计划是完成大约3-4篇短文),换了新工作,开始做手机网游相关的东西,服务器、客户端都弄,加班也比较多,因此这个逆向学习软件设计的小系列就没有来的及更新。这次补上,另外完成这个系列后,我将会写一些关于手机网游开发的相关心得体会或者经验教训,在客户端上面:主要围绕Cocos2d-x游戏引擎的理解、使用、扩展;在服务器端上:主要围绕Linux64位服务器端的开发过程中的问原创 2013-06-30 01:02:22 · 1545 阅读 · 2 评论 -
通过逆向学习软件设计(3)
新的一年来到了,这个系列的文章也由于各种原因拖了好久,无奈地也跟着跨年了!接下来几篇重点在于URL数据文件data.dat的定位及解密过程。根据上一篇的内容,我们很容易了解到大致的定位方法及方式,现在我们就要首先从逆向源码的角度来验证一下通过API调用流程监控结果的猜想。 首先,对于文件的各种操作着手,很容易进行API断点,然后通过栈回溯的方法定位到相关的关键代码位置,这个过程相对简单,原创 2014-02-07 01:09:44 · 1383 阅读 · 0 评论 -
通过逆向学习软件设计(4)
接上文,通过分析到核心函数重点逆向其中的六个子函数,从第一个函数Sub_525444开始(如下图)对应的函数汇编形态如下: 初步逆向代码如下:原创 2014-03-03 23:21:56 · 1261 阅读 · 0 评论 -
新年拿WinGDB最新版练练手
引子:年前BLOG被黑了,好多文章被恶意删除,好在优快云的朋友帮忙一一恢复了,可是就是关于WinGDB的那篇死活恢复不了,算是永久丢失了(也不觉得可惜,只是记录一个轨迹而已);新年新气象,恰好WinGDB这个软件具有特别好的练手特性,也就有了这篇文章,其中的Lincense算法部分也不算特别难,但是我还是比较懒,也就不细说了,还是回归一点,此篇文章不是为了破解商用,仅仅作为练手之用,更无意为盗版原创 2015-02-26 01:06:31 · 5000 阅读 · 10 评论 -
通过逆向学习软件设计(5)【完结篇】
本篇为完结篇,通过对CRadio的分析拆解,重点完成了对于整个软件中最有价值的电台数据文件的解密,同时作为完结篇也对整个软件另外一个重要的部分——播放的实现做一个连带的梳理,阐述其播放是如何实现的,涉及到的重点就是根据播放源的URL如何进行交换获取数据播放出来; 提纲如下: - CRadio电台数重点内容据的解密 - 如何应对不同源的请求、交互、播放 - 总结一、CRadio电台数重点内容据原创 2015-04-06 16:59:30 · 1427 阅读 · 0 评论 -
Visual AssistX 10.9.2302分析练手记
Visual AssistX 10.9.2302分析练手记【附最绿色非替换和谐方案】缘起 Visual AssistX是广大Windows平台下C++开发人员的必备辅助工具,从Visual Studio 6.0开始就我就开始使用这款插件工具,不知不觉这款工具就成了我在开发过程中不可或缺的工具之一,一直伴随至今。大过年的,如果不出去玩,不参加聚会,其实是一个很好的看看书、思考人生,...原创 2019-02-05 20:22:16 · 2532 阅读 · 4 评论 -
Uninstall Tool 破解手记
0x0 简述Uninstall Tool是目前我所用过的最强的傻瓜化卸载工具了【专业手段除外】,软件本身很小巧,但是涉及卸载相关的功能却很全面,如下图介绍所示:此工具有两种形态,一种是安装包版,一种是便携版也是我们常说的绿色版。本次破解以安装版为基础(PS:已验证便携版原理上与之一致)。0x1 思路及方法 拿到软件,首先看下软件有无什么保护,结果发现仅仅有...原创 2019-06-16 14:36:58 · 46894 阅读 · 15 评论 -
DebuggerX0.3版修改需求
根据这些天来的使用情况,对自己写的调试器DebuggerX准备做以下改进:增加对IDA函数导出的直接支持(TraceBP功能);添加进程Attach功能;拟提供签名函数的识别支持功能(直接使用IDA的库签名文件)(*视情况而定)研究自己实现调试框架,放弃微软提供的基于DebugEvent的调试框架,从而实现更加灵活的调试过程(同时也可以反一部分反调试)。原创 2012-12-14 18:07:51 · 729 阅读 · 0 评论 -
利用DebuggerX定位关键CALL
最新写了一个调试器正式的名字叫做DebuggerX,界面上山寨了一部分SOFTICE的界面:)利用自己写的调试器可以辅助定位一些软件的关键CALL,这里我们拿CALC.exe来举一个例子,这个也就是Windows自带的计算器程序。我想知道这个计算器的关于的关键CALL在那个函数当中,从而了解到这个关于界面是怎么出来的。OK,假设我不知道这个关于界面是通过什么样的函数或者调用弹出来的,这原创 2012-09-23 21:52:27 · 1429 阅读 · 0 评论 -
使用C++,还是了解点底层比较好~:)
工作闲暇的时候,同事跑来问我做一道关于C++的笔试题目,题目是这样的: int szNum[5] = { 1, 2, 3, 4, 5 }; int *ptrA = (int*)(&szNum+1); int *ptrB = (int*)((int)szNum + 1); std::c原创 2008-03-15 15:43:00 · 1182 阅读 · 0 评论 -
Visual C++ 异常模型【En】
原文链接:http://www.gamedev.net/reference/programming/features/vcppexceptmodel/When programming in C++ with Microsoft Visual C++, your program has two exceptions models: the normal C++ exception model a转载 2008-04-19 12:56:00 · 2392 阅读 · 0 评论 -
c/c++中内存区域划分大总结(好东西还是要转一转)
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2009-05-25 18:41:00 · 777 阅读 · 0 评论 -
逆向序列号生成算法(二)
接上次的,将序列号的验证算法流程及代码都整理出来了,最后弄成了三个小函数,为了更加方面阅读,理解验证算法的原理,进而为序列号生成算法的设计做铺垫,这里,我们将上次代码中的汇编部分,都逆向成C/C++来表述。 首先是计算部分的Step1: void CalculateKeyStep1( const char *pStrName, const char *pStrSerialNum,原创 2011-11-21 23:25:31 · 2084 阅读 · 0 评论 -
逆向序列号生成算法(一)
对逆向工程一直很感兴趣,工作之余自己也研究一下,好久没有练手了,OllyDBG的使用都感觉生疏了,晚上抽空先去补了补OllyDBG的使用方法,然后看到一个叫做CycleCrackMe的序列号保护练手程序(如图1),刚好是OllyDBG入门文章里面提到的一个演示用程序,只是把OllyDBG的消息断点及RUN的跟踪相关的知识讲了一下,对CycleCrackMe里面具体的加密算法留给读者自己去研原创 2011-11-13 21:18:03 · 3710 阅读 · 1 评论 -
逆向序列号生成算法(三)
接着上次的分析,继续分析下去,对于这个CrackMe,其要求是写出注册机,那么我们就根据其注册码的验证过程,进行逆向分析,首先找到最关键的一个爆破点,我们先看看这个爆破点的位置,如图1可见最后的验证关键点其实在那个MagicNum的值上面,因为用户名是我们给定的,属于已知值,而序列号则是可以由我们构造的也可以认为是已知值,唯一不确定的就是那个MagicNum了,而这个值却跟我们输入的用户名及序列号原创 2011-12-07 22:52:32 · 7833 阅读 · 1 评论 -
灵格斯Lingoes词典2012过期问题的解决
新年到了,新的一年当然有新的打算和目标,我的其中一个目标就是把英语再学好点儿,毕竟最新的资料都是用英文写的,“工欲善其事必先利其器”——学英文,好的词典必不可少!平时经常用词典软件就是灵格斯了,因为使用起来相对方便,更重要的是可以自己配置不错的辞典比如:牛津高阶、柯林斯等等,这个是最吸引我的地方!然而当2012到来的时候,我的灵格斯词典却不用了了,软件提示过期了!同时点击了升级,软件却原创 2012-02-23 22:34:21 · 3716 阅读 · 0 评论 -
天热,周末宅家,写了个BUG满天飞的Debug调试器
如题,放出截图MARK一下:原创 2012-08-20 00:14:28 · 3116 阅读 · 0 评论 -
给inc2l打个提醒补丁:)
用过RadASM的都知道,有时候会碰到一个较为莫名的问题,在include文件下利用inc2l生成一个对应的lib文件不成功且没有任何提示,性子急的人就容易以为程序本身出了问题,其实这个是程序在默认情况下的处理不给力的原因。这里可以分析一下inc2l,获取一些有用的信息:图2.1分析前问题重现 脱壳后利用OD载入进行调试后,通过分析可知该程序必然要进行文件的创建操作(因为lib原创 2012-08-16 19:25:14 · 1992 阅读 · 1 评论 -
分析某款网络收音机的数据解析部分
【声明:本文只是本着研究学习的目的进行分析,且关键部分都做了模糊处理避免给软件作者带来不良影响】最近发现一款很不错的免费软件,能够在线收听很多国内外的电台,该软件收集了几千个国内外的电台,可谓相当之方便,整个软件最具价值的部分就是这几千个电台的真实URL了,软件采用Borland Delphi 编写,其数据都放在Data文件夹中,还好软件的作者还是有一定的保密意识的,除了不重要的诸如树状节点显原创 2012-08-25 23:25:36 · 1211 阅读 · 0 评论 -
FAT32、NTFS文件直接操作小工具(上图MARK记录)
文件系统是操作系统的重要核心之一,能够对文件直接操作,可以做正常情况下无法完成的事情,比如:拷贝正在使用的文件、文件粉碎、文件的彻底隐藏等等。这些的核心就是要求能够对文件本质进行直接操作,因此采用什么文件过滤驱动的方式、其他API辅助的方式,在某种意义上说,还是隔了一层,对文件直接操作才是王道,不调用任何Windows提供的API才是最好的解决方案,一方面,相关的杀软无法做API Hook检测原创 2012-10-08 03:21:58 · 901 阅读 · 0 评论 -
重写软件调试器仿SOFTICE界面支持更多实用功能:)
不说废话还是上图MARK:)调试器界面图:功能表:原创 2012-09-18 04:39:45 · 3507 阅读 · 4 评论 -
使用C++,还是了解点底层比较好~:)[续1]
上次做了同事出的题目以后突然萌发了一个想法,那就是趁着这个机会对C++做一次新的体验(再学习),这次我打算从底层来探究C++的实质,并且用实时操作的手法澄清在现实工作和学习中对于C++难点的误解[注:实验环境--XpSP2简体中文版+VS2003英文版+SP1],首先我还是打算从最最基本的东西开始,今天就研究一下C++程序基本结构的问题【这次超级基础,下次将从函数、类开始分析了原创 2008-03-18 00:29:00 · 1217 阅读 · 0 评论
分享