<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LewisCheng的专栏]]></title><description><![CDATA[谁能教我怎么在博文中贴稳定的照片阿～～不过没照片，不怎么影响看文章，大家放心！一找到我马上补上]]></description><link>https://blog.youkuaiyun.com/LewisCheng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LewisCheng]]></copyright><item><title><![CDATA[PE格式详解（九）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854137</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854137</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:15:00 +0800</pubDate><description><![CDATA[          好了，如果你确实按进程看到了这里，那么我首先要钦佩你的毅力，感谢你的支持，同时也恭喜你已经对PE格式有了比较全面的了解。回想起来，其实PE格式的理解并不很困难，只是比较复杂，也容易搞混结构关系，所以我写了这第九篇，把PE格式的总体结构按研究的顺序给出，让这个轮廓清晰地出现在脑中。         好，如果我们拿到一个EXE，想要去分析它的格式，我们可以按下面的步骤进行：]]></description><category></category></item><item><title><![CDATA[PE格式详解（八）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854130</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854130</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:14:00 +0800</pubDate><description><![CDATA[          上次讲了输出区段，还是比较简单的，但输入区段内容就稍稍多了点，保持耐心阿，这是本系列关于PE格式部分的最后一讲啦！         输入区段(Import Section)，包含了所有从DLL中引用的函数的信息。与输出区段类似，这些信息是由几个数据结构描述的，其中最重要的是输入目录表(Import Directory)与输入地址表(Import Address Tabl]]></description><category></category></item><item><title><![CDATA[PE格式详解（七）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854125</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854125</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:13:00 +0800</pubDate><description><![CDATA[          首先介绍一下DLL相关内容。根据Win32 Programmers Reference所述（自己翻译的）：“在Windows中，动态链接库(DLL)是含有函数与数据的模块。一个DLL在运行时期由其调用模块加载，当DLL被加载时，它会被映射到主叫进程的地址空间中去。         DLL内有两类函数：输出(exported)与内部(internal)。输出函数是要]]></description><category></category></item><item><title><![CDATA[PE格式详解（六）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854122</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854122</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:12:00 +0800</pubDate><description><![CDATA[         前面花了很大的力气终于把复杂的PE header讲完了，在PE header紧接着的就是区段表(Secton Table)，所谓的紧接着，就是一个字节也不差的意思，^_^          还记得么？我们在很前面讲File header时，里面一个成员就是NumberOfSections，就是区段的个数，是７个，那么对应的区段表中的表项也应当有７项。         每一]]></description><category></category></item><item><title><![CDATA[PE格式详解（五）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854120</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854120</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:11:00 +0800</pubDate><description><![CDATA[          上次文章因为实在太长，所以不得不把这么简单的一点内容单独成文。回顾一下，上次先说到PE header，然后说到其中的成员Optional header，它的最后一个结构成员DataDirectory，是一个含有16个IMAGE_DATA_DIRECTORY类型元素的数组，每一个元素都指向PE文件内的一个很重要的数据结构。    首先列出IMAGE_DATA_DIRECT]]></description><category></category></item><item><title><![CDATA[PE格式详解（四）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854118</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854118</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:09:00 +0800</pubDate><description><![CDATA[          特地把Optional header放一篇文章，是因为它比较复杂与庞大，也因为它比较重要。         老样子，先是IMAGE_OPTIONAL_HEADER结构：typedef struct _IMAGE_OPTIONAL_HEADER {    WORD Magic;                     //　又是Magic    BYTE Ma]]></description><category></category></item><item><title><![CDATA[PE格式详解（三）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2854110</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2854110</guid><author>LewisCheng</author><pubDate>Sun, 31 Aug 2008 00:06:00 +0800</pubDate><description><![CDATA[         PE header对应C中的IMAGE_NT_HEADER32结构，如下：typedef struct _IMAGE_NT_HEADERS {    DWORD Signature;                //　PE Signature PE.. (50h 45h 00h 00h)    IMAGE_FILE_HEADER FileHeader;       ]]></description><category></category></item><item><title><![CDATA[PE格式详解（二）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850569</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850569</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:12:00 +0800</pubDate><description><![CDATA[      一个PE程序总是以一个64字节的DOS header结构开头，目的就是为了如果程序在DOS中运行，DOS会识别它为正确的EXE并进而运行DOS  stub，它的作用就是输出字符串”This program cannot run in DOS mode.”然后退出。    下面就是DOS 　Header在C语言中的结构表示（来自MinGW的winnt.h）typedef st]]></description><category></category></item><item><title><![CDATA[PE格式详解（一）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850567</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850567</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:11:00 +0800</pubDate><description><![CDATA[      本系列主要是参考英文原本ARTeam的PE File Format Tutorial并加以注解，以最简洁的语言来阐述PE格式，帮助大家快速入门。在开始之前，请确定您懂得C语言，至少是基本数据类型、数组和结构体，以及会WinHEX的基本使用方法。任何错误都欢迎指出，感激不尽！ （一）介绍PE 格式    PE格式（Portable Executable，可移植可执行文件）是原生的]]></description><category></category></item><item><title><![CDATA[Windows Internals　学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850561</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850561</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:08:00 +0800</pubDate><description><![CDATA[          《Windows Internals 4th Edition》是著名Windows内核专家Mark E. Russionovich与David Solomon Expert Seminars的主席David A. Solomon合作的一本介绍Windows架构和工作细节的著作。中文版由微软亚洲研究院研究员潘爱民老师翻译，这本书倍受各权威人员和机构所推荐，堪称经典。我第一次遇]]></description><category></category></item><item><title><![CDATA[C反汇编实例（详细注解版）（三） ]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850553</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850553</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:07:00 +0800</pubDate><description><![CDATA[          上次我分析了一下，debug模式下反汇编后的算法部分代码，天才的您可能觉得不算糟，想再搞点花样，那么本文就能满足你的需求。天书夜读上其实还贴出来了release模式下的代码，它经过vc编译器O2的优化，我初次看到反汇编代码时，还真汗了一把。不过定下心来细细品位还是可以看懂的，尽管正如原书所说，连语句的对应顺序也已经不见了。。。         废话不多说，先贴出代码大伙]]></description><category></category></item><item><title><![CDATA[C反汇编实例（详细注解版）（二）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850550</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850550</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:06:00 +0800</pubDate><description><![CDATA[     那么有了上述三方面的基础，我们就可以来逐一解读那段“传奇”的汇编代码了。初始化i00411A3E mov dword ptr [i],0跳转至条件判断00411A45 jmp myfunction+30h (411A50h)循环表达式，对i每轮加100411A47 mov eax,dword ptr [i]00411A4A add eax,100411]]></description><category></category></item><item><title><![CDATA[C反汇编实例（详细注解版）（一）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/2850544</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/2850544</guid><author>LewisCheng</author><pubDate>Fri, 29 Aug 2008 22:03:00 +0800</pubDate><description><![CDATA[ 呵，好久没写优快云文章了，来凑个热闹。最近我阅读了楚狂人,wowocock写的《天书夜读》试读本，对C反汇编感触颇深，书中有一例算法反汇编，其对汇编的阅读确实富有挑战，而该书中也未详解，在此，我谨将此例详细分析如下，帮助大家更好理解C反汇编代码，若有任何错误，请大家批评指正！         该例的要求是求两个3x3矩阵的乘积，其C源代码如下：int myfunction(int ]]></description><category></category></item><item><title><![CDATA[转载：火星人计算pi的牛程序分析]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703667</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703667</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:59:00 +0800</pubDate><description><![CDATA[一、源程序 本文分析下面这个很流行的计算PI的小程序。下面这个程序初看起来似乎摸不到头脑，不过不用担心，当你读完本文的时候就能够基本读懂它了。 程序一：很牛的计算Pi的程序 int a=10000,b,c=2800,d,e,f[2801],g;  main() { for(;b-c;)     f[b++]=a/5; for(;d=0,g=c*2;c -=14,printf("%.4d",e+]]></description><category></category></item><item><title><![CDATA[原创：大数阶乘的讨论(4) （源码未实现）]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703600</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703600</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:49:00 +0800</pubDate><description><![CDATA[(3)中我说过，要根据不同的大小适当调整两个常数，否则会导致计算错误，显然这是相当麻烦，同时由于大量调用multiply函数，又浪费了不少时间。综上，我打算做以下改进：1.为了提高multiply的速度，可以把3里的multiply函数改成inline内联的，理由是(3)中的乘法函数比较简短，而且代码调用也只有1处，不会导致程序体积变得很大。不过注意，请把c后缀改成cpp！2.突然想到]]></description><category></category></item><item><title><![CDATA[原创：大数阶乘的讨论(3) ]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703557</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703557</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:38:00 +0800</pubDate><description><![CDATA[上次，我使用了字符数组来实现了大数阶乘的高精度计算，但效率较低，现在我又使用了uint数组来代替char数组，这样的速度又快了很多，代码也得以大为简化，现贴c语言源码如下，gcc编译通过：//: High Precision Calculator updated at 17:14 7/11/2007 By Lewis Cheng//PS This program only support 40]]></description><category></category></item><item><title><![CDATA[原创：大数阶乘的讨论(2) ]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703548</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703548</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:32:00 +0800</pubDate><description><![CDATA[上次我实现的阶乘虽然速度超快，但精确度实在欠缺，这次使用字符串数组储存每个位，可以实现阶乘完整输出，以下是我不久前写的c++代码，其中还有一个计算大整数乘幂的函数//: High Precision Calculator By Lewis Cheng Completed at 12:55 7/11/2007// P.S. This algorithm is based on char arra]]></description><category></category></item><item><title><![CDATA[原创：大数阶乘的讨论(1)]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703534</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703534</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:26:00 +0800</pubDate><description><![CDATA[阶乘一般定义为n!=nx(n-1)x(n-2)...x2x1用普通函数可以表示为int fact(int n){     int r;     while(n!=1)     {               r*=n;               --n;     }     return r;} 也可以用函数递归形式int fact(int n]]></description><category></category></item><item><title><![CDATA[原创：基于公钥的LC加密算法]]></title><link>https://blog.youkuaiyun.com/LewisCheng/article/details/1703487</link><guid>https://blog.youkuaiyun.com/LewisCheng/article/details/1703487</guid><author>LewisCheng</author><pubDate>Mon, 23 Jul 2007 20:00:00 +0800</pubDate><description><![CDATA[  简易LC公钥密码Elementary Lewis Cheng Public-key Cryptosystem(初级版) 一.此密码体制涉及下列变量：      公开：密文c, 公钥e>2 , 正整数p保密：明文m>0, 私钥d, 正整数n二.计算过程如下:流程：发送者利用e,m执行加密运算得到c,p,d,解密者利用e,d,p,c解出m(1)    任意选]]></description><category></category></item></channel></rss>