汇编语言
文章平均质量分 94
masefee
PC网络游戏开发。。
展开
-
打算写一个ASM集成开发环境
最近使用汇编编译器的时候,感觉太麻烦了。。控制台编译链接。。网上下载的两个稍微集成的。一个不用说了,最基本的吧。另一个好一点,不过在语法着色方面和项目文件统一管理方面还有所欠缺。 自己也想用自己写的东西。。嘿嘿。。现在基础框架已经搭成。。。就差写功能逻辑了。。。。加油。。。原创 2009-03-04 08:58:00 · 2275 阅读 · 6 评论 -
【揭秘VC CRT库Intel模块】-- strlen
既然是开篇后的第一篇,就先来一个简单且实用的函数吧,以增强你我的信心,然后再一步一步到复杂,这样从前至后,也就很顺其自然了。 还记得初学C的时候,对于字符串操作一类函数的记忆显得尤为深刻,各种考试会考strlen、strlen等函数的实现,到了毕业找工作,很多公司的笔试题里,也包含有strlen、strcpy等函数的实现。可见字符串操作类函数是受到了老师和公司出题者的青睐啊。那么原创 2011-12-06 00:00:25 · 11811 阅读 · 20 评论 -
【揭秘VC CRT库Intel模块】-- 开篇
在本博客开启时,就有打算写这块的冲动,直到现在,直到今晚,突然一股劲让我开了这个系列,写下开篇。 近段时间一直忙于工作,潜下心来做自己的研究也少了很多,每天下班回家都10点多了,很累。一般就洗洗睡觉了,远远比不得几年前的精力和状态了。看来我得好好调整一下时间,让时间用在刀刃上。 切入正题,本系列主要针对vc的crt库中的intel版本asm源码进行逐个剖析,前面原创 2011-12-05 23:59:50 · 6952 阅读 · 2 评论 -
CC++程序员“是否应该掌握”【某种汇编语言】?
工作3年之余,发现精力会随着很多事情而降低,以前觉得很有激情很有兴趣的东西,可能会慢慢变得“无关紧要”了。不知道这是一种所谓的洒脱,还是一种懈怠。总之我会努力克服现在的状态,让自己的业余时间再充分利用起来。加上最近得了一个“准专家徽章”,为了对得起这个徽章,也为了摆脱前面的懈怠,原创 2011-09-11 15:19:32 · 15860 阅读 · 53 评论 -
【诡异的精简C语言程序】main函数隐藏
哎,几个月以来没有写博客了,时间太紧,精力又有限。今天正好有这个时间,打算写一篇今天在网上讨论的一个问题。我想大家应该都听过“国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)”吧,今天无意间在网上讨论到原创 2011-07-14 21:49:21 · 23976 阅读 · 81 评论 -
Inline Hook 之(监视任意函数)
前面已经写过两次inline hook的博文了,第一篇为:《C/C++ HOOK API(原理深入剖析之-LoadLibraryA)》,这篇博文的方法是通过修改任意函数的前面N个字节,实现跳转并进入到我们自定义的hook函数里,执行完毕我们的hook函数之后,再直接调用被hook的函数。第一篇的方法没有考虑多线程的情况,所以在多线程环境下会有问题。第二篇为:《Inline HOOK API 改进版(hot-patching)》,这篇的初衷是为了解决多线程的问题,因为这种方式是一直hook的,直到程序结束。原创 2011-04-15 21:05:00 · 41212 阅读 · 26 评论 -
Inline HOOK API 改进版(hot-patching)
记得在之前写过一篇hook api的文章(C/C++ HOOK API(原理深入剖析之-LoadLibraryA)),那篇文章主要原理是构造一块代码字节,将LoadLibraryA函数的前面16个字节给修改,然后跳转到自定义的函数中。要调用正常的函数时,又将其unHook,这样一来再一次调用中,有一次unhook和一次hook,操作显得过于频繁。而且hook与unhook当时设计成了thiscall,因此维护传递this的寄存器(通常是ecx)就成了必然,再加上参数的传递,__Inline_Hook_Fun原创 2010-06-11 15:56:00 · 15966 阅读 · 13 评论 -
深入C/C++之基于CheckStackVars的安全检查(VS2008)
最近一直忙毕业的相关事情,加上工作,转眼间,又到月底了,之前承诺的每月一篇博文,前几天就一直在寻找到底要写什么,近两天又突然发现有很多东西可以写。本篇就先延续之前的一篇基于Cookie的安全检查机制(深入C/C++之基于Cookie的安全检查(VS2005))来介绍下另外一种在DEBUG版本下的安全检查,也就是CheckStackVars检查,话不多说,直接进入正题。 在VS2008下,函原创 2010-05-28 11:12:00 · 13449 阅读 · 13 评论 -
C/C++条件(三目)运算符巧妙原理解析
最近一直研究一个对个人而言很有价值的一个LIB库的逆向。在今天下班后突然灵感闪现,这个断断续续逆了接近一周的核心管理类。终于在今天给逆完了。在最后一个函数里,碰到了之前基本没有用过的一条指令。(呵呵,高手见笑了!)当然光看单句的汇编指令,是没有办法看出具体的作用的,而且还很可能会认为原作者本来就是用汇编来实现的!呵呵,先不废话,先贴出反汇编代码一睹为快: mov dw原创 2009-11-09 21:30:00 · 8472 阅读 · 18 评论 -
深入C/C++之基于Cookie的安全检查(VS2005)
昨天在试着逆向一个有时间期限的LIB时,发现一些特别的检查函数,在之前的VC2003中是没有的,这些函数可谓是重量级函数。由于个人比较看不惯自己不懂的东西,出于不愤之情绪研究了下这些函数。首先在这里介绍个人认为较之其他几个更为重要的一种安全检查方式——基于Cookie的缓冲区溢出安全检查! 为了在发布版本中也能检测到缓冲区溢出,防止程序因缓冲区而受到攻击,VS2005(VC8)便增加了基于原创 2009-10-05 09:36:00 · 6637 阅读 · 11 评论 -
C/C++ HOOK API(原理深入剖析之-LoadLibraryA)
9月都快结束了,之前一直忙到写自己的东西加上上班。基本没有时间研究下汇编和C C++方面的感兴趣的东西。再怎么说嘛,9月还是得写一篇撒,以后每月至少一篇吧。给自己定了,希望大家监督。嘿嘿!这篇文章就来谈谈平常很常见的HOOK技术,这里呢。写得比较简单,方法很多。只讲原理!希望大鸟们别吐我口水哈 - -。好!切入正题。首先是概念吧。什么是钩子(HOOK)? 钩子(Hook),是Win原创 2009-09-18 12:36:00 · 27617 阅读 · 13 评论 -
利用C++的operator new实现同一对象多次调用构造函数
struct STest{ STest( void ) { ++iCount; } int iCount;} int main( void ){ Stest obj; obj.iCount = 0; new( static_cast( &obj ) ) Stest();原创 2009-08-18 22:51:00 · 7868 阅读 · 10 评论 -
Shell Code 原理深入剖析
这两天都一直在解析3D模型数据。今天闲暇之余写了段测试代码。分析下黑客们用的缓冲区溢出攻击原理及Shell code原理。好,直接进入正题。有什么说得不对的地方还望大家纠正。嘿嘿!首先来这么一段小小的测试代码:void test( void ){ cout }int main( void ){ int a[ 1 ]; a[ 3 ] = ( int )test; return原创 2009-08-06 20:08:00 · 5334 阅读 · 23 评论 -
C++中一些不常用的前缀介绍
1. placement new 方法 如:pi = new ( ptr ) int; //placement new 括号里的参数是一个指针,它指向一个内存缓冲器,new操作将在这个缓冲器上分配一个对象。Placement new的返回值是这个被构造对象的地址(比如扣号中的传递参数)。placement new主要适用于:在对时间要求非常高的应用程序中,因为这些原创 2009-04-09 11:31:00 · 3046 阅读 · 0 评论 -
C++中模板元编程原理及速度测试
这两天一直被这个模板元编程给迷住了,觉得它真是一个很好的东西!于是好奇就仔细的研究了下,之前看过几篇文章大概的意思就是“编可以编程的程序”。听起来很神奇吧。 其基本原理也就是让编译器在编译期间就计算好一些我们需要计算的值。在程序运行期间就不需要再去计算这些值了,从而提高程序的运行性能。当然这样做会让程序编译起来很慢,一般不常用。不过在一些需要的地方我们还是舍得编译的效率问题的。。原创 2009-04-17 12:52:00 · 5436 阅读 · 6 评论 -
C++中获得CPU高精度时间戳( 纳秒级 )
对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。 在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种是Q原创 2009-04-09 12:41:00 · 11623 阅读 · 10 评论 -
基本完成山寨汇编IDE环境
最近一直加班,回家基本就累得不想写东西了。一直就拖到现在,本来几天就能完成主体功能的,结果一直拖到现在。。。惭愧啊! 嘿嘿! 写到这里,我也暂时搁下了。。能基本的工程管理和编译就可以了。。得抓紧写ALGA。。。。原创 2009-03-17 09:19:00 · 2977 阅读 · 5 评论 -
C++/Debug模式查看EFL(标志寄存器)详解
在比如使用汇编指令如:ADC, SBB等指令时,我们为了心里那份好奇感就不得不去了解下FLAG寄存器(EFL)里面的东西。通过二进制详细的查看各标志位的值。然后这些需要用到标志寄存器的指令等就一目了然了。 - -迫不及待写了段测试代码来看看其中的秘密:#include int main( void ){ __asm { mov al, 0xff原创 2009-04-20 13:00:00 · 10031 阅读 · 8 评论