系统载入dll的整体过程可以分为以下几个步骤:
1、将dll文件内容载入内存,并按照对齐粒度进行对齐并设置对应的各个内存区间的权限属性;
2、如果dll有重定位表,则进行重定位操作;
3、填充dll的导入表;
4、用ATTACH参数调用dll的入口函数进行初始化,之后返回imagebase即可。
因此了解了系统载入dll的整体流程,也就可以自己实现将dll载入内存并执行,这种方法对于加密等有一定意义。
但由于自己载入内存后,系统api GetProcAddress函数失效,因此在自己实现loadlibrary函数的同时必须自己实现此函数。
下面附上参考网上现有代码原理后写的代码。
进过少量测试,暂未发现bug,如发现bug,欢迎提出。
DLLLoader.h文件内容如下
//---------------------------------------------------------------------------
#ifndef DLLLoaderH
#define DLLLoaderH
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio .h>
#include <windows .h>
//---------------------------------------------------------------------------
//public functions
DWORD LoadDllFromMemory(LPVOID lpBuffer,__int64 BufferSize);
DWORD FreeDllFromMemory(LPVOID lpBaseAddress);
FARPROC GetDllProcAddress(LPVOID imagebase,char * FuncName);
// private functions
DWORD AlignDllToMemory(LPVOID lpBuffer,PIMAGE_DOS_HEADER &dosHeader,PIMAGE_NT_HEADERS &ntHeader,__int64 BufferSize); //从内存载入到对齐内存
DWORD GetAlignedSize(DWORD Origin,DWORD Alignment); //计算对齐后的位置
DWORD GetImageSize(PIMAGE_NT_HEADERS ntHeader,PIMAGE_SECTION_HEADER sectionHeaders); //计算总imagesize
DWORD Relocation(PIMAGE_NT_HEADERS ntHeader,LPVOID NewBase); //修正重定位
DWORD FillImportTable(LPVOID imagebase,PIMAGE_NT_HEADERS ntHeader); //填充IAT
//entrypoint function type
typedef UINT (CALLBACK * LPENTRYPOINT) (HANDLE hInstance, DWORD Reason, LPVOID Reserved);
#ifdef __cplusplus
}
#endif
#endif
</windows></stdio>
阅读全文…
Why AXPDF PDF to Flash Converter?
It’s because we are using vector technology, vector files are very much smaller and much faster to transfer via network, and, it will be always highest quality even magnify limitlessly. See comparison details:
| AXPDF uses Vector solution |
Others are Raster type output |
Original PDF size at 308KB,
Created Online magazine file at 779KB
Download example |
Same original PDF size at 308KB,
Created Online magazine file at 5.23 MB
(7 times the size of AXPDF solution) |
| 1M connection, downloading takes: 0.78 Sec |
1M connection, downloading takes: 5.23 Sec |
Always highest quality on both text and icons: |
Blurry for all texts and icons: |
Key Features
- Convert PDF into Flash files including:
Digital magazines, online magazines, digital catalogs, flash magazine, online manuals, interactive flyers, reports, whitepapers, newsletters, brochures, flipping photo albums and other digital documents in PDF formats.
- Page flip simulating:
Feel ease flipping the online e-book and have fun in reading.
- Quick loading e-pages:
Pages are processed for high speed online loading, with few seconds all pages will be cashed. No snoring waiting for pages loading.
- Zoom viewing with variable resolution:
Zoom dynamic, zoom in, zoom all, zoom out, either way and pan pages to view details.
- Hyperlinks detective:
Automatically detect http links in PDF and create hyperlinks in SWF.
- Stand-alone version:
Works independently of Adobe PDF reader and other 3rd party viewers.
|
aXmag的PDF to Flash Converter是个pdf转swf的软件,支持翻页型效果,之前52ba有位朋友求破,软件算法比较繁琐,就不去写注册机了,直接爆破之。 阅读全文…
08.05:打击盗版狗目的已达到,停止发放
RT,之前iebook 2010发布的时候也凑过热闹,扔了一个截图,当时没有发布,鉴于最近某论坛打着复制加密狗的旗号进行破解并贩卖,因此特免费放出此全功能破解版,无需任何狗。
现发布iebook 2010 全功能破解版,实现专业版的所有功能,另加按钮可替换。
附去除封底技术支持信息步骤:
如下图所示,将显示技术支持设置为false,并且点击 应用,之后生成杂志即无封底技术支持信息:

下为截图:



阅读全文…
Direct UI自从某个大牛第一次使用以后,获得了越来越多的人的追捧。究其原因,无外乎,DirectUI由于是整个窗口只有一个句柄,重绘只有一个句柄掌握,效率高。同时DirectUI窗口更容易实现皮肤效果的统一,例如任一控件可以实现背景透明,不规则形状等等。换肤也比以前简单的多,贴图而已。效果参见qq2009,2010.
这里简要说明下自己研究DirectUI的心得。传统的GUI程序中,大部分控件都是有句柄的。有句柄也就意味着其具有独立的消息队列,独立承担自绘的任务。由于其有句柄,因此整个体系架构简单得多,想让某个控件发生某种状态或响应,直接用其句柄对其发送消息即可。
但是DirectUI窗口中,由于所有控件都是无句柄的,无法直接响应消息,那么怎么办呢?
看下以下的体系架构:

这里处于整个架构顶端的directui基类,这是个有句柄的窗口类,其首先根据配置绘制出所有的directui控件,并保存每个directui控件的指针(取代句柄)。之后响应消息,并通过位置判断等将消息用指针指向进行派发到下级的directui控件中,而不需要sendmessage和postmessage这种方式,类似于delphi控件组中的perform方法。下级控件获得响应的消息,并进行响应,并且调用响应的回调函数。
也就是说,整个架构中,必然存在一个directui基类,这个基类必然是有句柄的,只有这个有句柄的基类的存在,才能保证directui界面中的所有控件能正常响应消息,因为这个基类起到了一个绘制和无句柄情形下消息分发的作用。
以qq2010为例,其directui基类就是TXGuiFoundation类,所有窗口都由此类产生并绘制。
DelphiSwfSdk近一年没更新,作者消失无踪,留下bug一堆。最近在完善DelphiSwfSdk的过程中,对swf文件格式有了系统的了解,同时就自己比较感兴趣的as加密,也进行了一下研究。研究发现,as1,as2时代的加密,其实大部分都只能称之为“混淆”,利用混淆达到迷惑反编译器甚至卡死反编译器的目的。
就其原理,本质上只在于 反编译器 与 播放器 在处理swf文件时的细节上的差异。详述如下:
1. swf反编译器在反编译过程中,是按照swf的文件规范,将swf依次拆分为很多tag,然后如果tag中含有脚本,例如doaction或doinitaction等tag,则对这个tag中的bytecode,按照最紧凑原则进行依次读取解析,直至解析完整个swf文件。
阅读全文…
swf文件格式是基于tag的,每个tag之间独立,只有引用与被引用的关系。软件在处理swf文件时,遇见不认识的tag,可以跳过处理。
截止swf 10为止,tag共有以下种类,其中有些tag已经被废弃不用。已经标出。
tagEnd = 0;
tagShowFrame = 1;
tagDefineShape = 2;
tagFreeCharacter =3;
tagPlaceObject = 4;
tagRemoveObject = 5;
tagDefineBits = 6;
tagDefineButton = 7;
tagJPEGTables = 8;
tagSetBackgroundColor = 9;
tagDefineFont = 10;
tagDefineText = 11;
tagDoAction = 12;
tagDefineFontInfo = 13;
tagDefineSound = 14;
tagStartSound = 15;
tagStopSound =16;
tagDefineButtonSound = 17;
tagSoundStreamHead = 18;
tagSoundStreamBlock = 19;
tagDefineBitsLossless = 20;
tagDefineBitsJPEG2 = 21; 阅读全文…
篇首语:这篇文章老早就想写了,但是本人懒散,兴趣爱好多变,因此本文一直流产至今,知道最近受CGFinal的CGArt杂志的as3翻页核心刺激,重新研究as3杂志时,才有了写这篇唠叨之词的兴致。
另:本文中仅唠叨思想,而无完整实现给出,因此想不自己动手的可以关掉此页面了,对你们的乘兴而来,败兴而归,本人深感抱歉!
电子杂志从初出茅庐,到兴起,乃至今天的回归平淡,依稀走过了6,7年的时光。
zinemaker的诞生,是推动当时电子杂志行业发展的一大举措,也是她将电子杂志这个原来遥不可及的东西摆到了普通业余爱好者的面前,之后,业余杂志数不胜数。
即使2010年的今天,zinemaker沉寂多年后的今天,zinemaker在电子杂志爱好者的手中,依然发挥着她的余光预热。
但是,不得不说,zinemaker的杂志表现形式太单调,翻页效果不够完善。令人失望的是,网上见得比比皆是的都是基于原杂志核心就行的改进,诸如:1、尺寸改进后的模板,2:按钮美化后的模板,3:添加个别功能,诸如打开密码后的模板,4:搜索,放大缩小,自动缩略图等等。 但 这些并不涉及zinemaker的翻页核心:pageflip.swf,而只是其外在的部分表现形式的更改及优化。zinemaker杂志的翻页依旧是那么死板,那么别扭,那么令人感到难受。 阅读全文…