wenjiang 的个人资料morning's blog照片日志列表更多 ![]() | 帮助 |
|
|
5月29日 被VC2005耍了vc++ 2005 generates wrong code when using /O2 /arch:SSE in some circumstances
很隐蔽的一个bug,首次遇到,费了好大的劲才发现 5月20日 义乌广电开始强行推广数字电视了5月19日 做了一个 v8 的包装接口使用 SDK方式编程,可以进行 js 和C++ 之间的互相调用,使用这个模块不需要接触 v8的内部实现,接口简洁.
对于原来不具有和 JS双向通讯的代码,只需加入少量代码即可,此外,模块支持 VC6及以后版本.
此外,发现 v8 的速度真是相当爽啊.
the sample is simple,哈哈
class Window
{ public: Window() { minWidth=0; minHeight=0; maxWidth=0; maxHeight=0; } protected: //方法 int msgbox(LPCTSTR text,LPCTSTR title) { return MessageBox(NULL,text,title,0); } void showwindows(int dwFlag,int dwFlag2) { DbgPrint(_T("参数:%d,%d"),dwFlag,dwFlag2); } BOOL Gettrue() { return true; } BOOL Getfalse() { return FALSE; } int Getflag() { return 135; } void Print(LPCTSTR str) { DbgPrint(_T("window:%s\n"),str); } BOOL GetCaptionbyvar(BSTR* pstr) { *pstr=m_strCaption.AllocSysString(); return TRUE; } //属性: protected: void SetminWidth(UINT nNewVal) { minWidth=nNewVal; } UINT GetminWidth() { return minWidth; } void SetCaption(LPCTSTR szCaption) { DbgPrint(_T("new Caption:%s"),szCaption); m_strCaption=szCaption; } BSTR GetCaption()
{ DbgPrint(_T("now Caption:%s"),(LPCTSTR)m_strCaption); return m_strCaption.AllocSysString(); } //消息 public: void OnLoad() { m_jsengine->Invoke(this,"OnLoad"); } void OnUnLoad()
{ m_jsengine->Invoke(this,"OnUnLoad"); } int test(int nVal)
{ _variant_t varResult; m_jsengine->Invoke(this,"test",&varResult,nVal); return varResult; } public:
UINT minWidth; UINT minHeight; UINT maxWidth; UINT maxHeight; CStdString m_strCaption; JS_DECLARE_DISPATCH_MAP();
JS_DECLARE_EVENT_MAP(); }; //假想的窗口对象(唯一实例) JS_BEGIN_DISPATCH_MAP(Window) JS_DISP_FUNCTION(Window,showwindows,VT_EMPTY,VTS_I4 VTS_I4) JS_DISP_FUNCTION(Window,Getflag,VT_I4,VTS_NONE) JS_DISP_FUNCTION(Window,Print,VT_EMPTY,VTS_BSTR) JS_DISP_FUNCTION(Window,msgbox,VT_I4,VTS_BSTR VTS_BSTR) JS_DISP_FUNCTION(Window,Gettrue,VT_BOOL,VTS_NONE) JS_DISP_FUNCTION(Window,Getfalse,VT_BOOL,VTS_NONE) // JS_DISP_FUNCTION(Window,GetCaptionbyvar,VT_BOOL,VTS_PBSTR) JS_DISP_PROPERTY(Window,minWidth,VT_I4) JS_DISP_PROPERTY(Window,Caption,VT_BSTR) // JS_DISP_PROPERTY(Window,minheight,VT_I4) JS_END_DISPATCH_MAP() g_jsengine=CreateJSEngine();
if(g_jsengine->LoadFile(szFile))
{ if (g_jsengine->Compile()) { // g_jsengine->AddGlobalFunction("Print",Print); Window g_win;
Window2 g_win2; g_jsengine->RegisterGlobalClass("WINDOW",g_win.GetDispMap(),g_win.GetEventMap()); g_jsengine->RegisterGlobalClass("wiNDOw2",g_win2.GetDispMap()); g_win.SetJSEngine(g_jsengine);
g_win2.SetJSEngine(g_jsengine); g_jsengine->CreateGlobalObject("WIndow","wIN",&g_win); g_jsengine->CreateGlobalObject("winDOW2","WIn2",&g_win2); // g_jsengine->AddInstanceFunction("win2","Print2",Print2);
if (g_jsengine->Run()) { g_win.OnLoad(); DbgPrint_CON(_T("脚本Result:%s\n"),g_jsengine->GetResult());
DbgPrint_CON(_T("minWidth:%d,minHeight:%d,maxWidth:%d,maxHeight:%d\n"), \
g_win.minWidth,g_win.minHeight,g_win.maxWidth,g_win.maxHeight); int x=g_win.test(11);
DbgPrint_CON(_T("返回新数值:%d\n"),x); g_win.OnUnLoad(); } else { DbgPrint_CON(_T("脚本执行错误!\n")); DbgPrint_CON(_T("Script:\t\t%s\n"),g_jsengine->GetJSFileName()); DbgPrint_CON(_T("Line:\t\t%d\n"),g_jsengine->GetLastErrorLineNo()); DbgPrint_CON(_T("Source:\t\t%s\n"),g_jsengine->GetLastErrorSourceLine()); DbgPrint_CON(_T("Error:\t\t%s\n"),g_jsengine->GetLastErrorMessage()); } } else { DbgPrint_CON(_T("脚本编译错误!\n")); DbgPrint_CON(_T("Script:\t\t%s\n"),g_jsengine->GetJSFileName()); DbgPrint_CON(_T("Line:\t\t%d\n"),g_jsengine->GetLastErrorLineNo()); DbgPrint_CON(_T("Source:\t\t%s\n"),g_jsengine->GetLastErrorSourceLine()); DbgPrint_CON(_T("Error:\t\t%s\n"),g_jsengine->GetLastErrorMessage()); } } else { DbgPrint_CON(_T("脚本加载失败!\n")); } DeleteJSEngine(g_jsengine); 5月12日 vcpkg 更新到 4.7最近的主要更新是
1.增加了cryptdll 模块,编译过程中自动加密dll,这可以较好的对抗逆向分析
2.修正一处vc patch
3.完成环境变量的处理
v.4.70 (2009.5.12)
1.解决4.65遗留的问题,现在,变量将在识别平台后进行解析,4.66引入的操作被取消 2./implib 不再必须,cryptdll可以自动处理文件格式,重写了cryptdll的重建dll/lib的算法 3.修正VC字体补丁 v4.69 (2009.5.7)
1.添加 cryptdll 功能,仅对 windows 子系统,且包含 /implib 的项目有效,文件生成时自动抹掉导出表的函数名 配套的VCLoader 改动如下:
1.绝大部分代码进行了重写
2.现在编译器设置和使用习惯信息分开保存,使用习惯记录了每个编译器的使用次数,每个工程所用的编译器,启动时如果能读取到这个工程上次所用的编译器,那么会优先推荐这个编译器,否则,推荐使用次数最多的编译器.
5月1日 来,破解手机QQ2008!今天早上用了一下手机QQ,给我的印象是功能还不错,操作很方便,广告也挺多,一个早上被 系统消息烦了好像4次.另外,很多基于网页的功能很容易点开. 于是,打开反汇编工具,通过分析,发现只需做小小修改即可去掉不少多余的东西. 以下内容适合 最新官网上的适合Nokia 3230的QQ2008(手机QQ2008(S60 V2)正式版 Build064). 1.工具 反汇编: IDA(如果你只需要修改,则不需要此工具) 16进制修改: Ultraedit(你可以任意选择自己喜欢的16进制编辑器) 2.原理 根据sybian的http连接方式找到相应代码 根据ARM指令集修改具体代码 3.修改方法 把手机里面的TmtHttpEngine_0xA0008D31.dll拷贝到PC,用任意16进制编辑工具打开这个文件,定位到 0x326F,把原来的 1A 改成 0A. 4.效果 修改后:手机通讯网/QQ空间/社区等所有网页形式的功能均失效,聊天正常. |
|
|