UC故事2011/11/20 - 1

【实战指南】DBeaver EE Windows版高效破解与配置全解析 本文详细解析了DBeaver EE Windows版的高效破解与配置方法,涵盖Java环境配置、破解包部署、配置文件修改等关键步骤,并提供了性能优化和数据库连接的最佳实践。适用于需要解锁企业版高级功能的数据库开发人员,帮助提升工作效率。 阅读详情


### 研究Chat实现 ###


1. 研究目标

*  Chat模块被load的全过程

* Chat消息发送过程

* Chat消息接收过程


2. WinMain() of ConfMain

launch rtTracespy.exe(Q:Why not see 任务管理器?)

load rtDiagnose.dll

load rtConfClient.dll(主程序)

启动rtDiagnose.dll调试(Q:与TraceSpy.exe之关系?实际做了什么东东?为什么thread pool的启动会放在这里?)

调用rtConfCient的LaunchConf

停止调试


3. ConfClient:: LaunchConf

创建Mutex(用于控制只有一个ConfMain出现,but Why ?)

初始化ATL环境

load riched32.dll(why ?)

load rtConfRes.dll并设置_Module(_Module.m_hInstResource = ::LoadLibrary(szDllPath);)

Call Run():生成主窗口并进入消息循环

释放ATL

释放Mutex


4. ConfClient::Run

实例化MessageLoop对象并加入_Modue

实便化CConfManage,并据此生成MainFrame对象

load infowarelab.ini

主窗口调用CreateEx

显示主窗口

进入消息循环

     CMainFrame::OnCreate被调用(实现了线程初始化、Conference建立等功能,与Server会有N多次交互 ,代码在CConfManage::CreateConference(),2011/12/04

销毁对象, 退出


5. CMainFrame::OnCreate

实例化CConfClientView并调用create(具体做了什么东东?)

把_Modue中的MessageFilter指向CConfClientView

PrepareSession()

ConfManage::CreateConference()  // 这里做了LeaveConference/CreateConference/Join Conference三个动作。


6. CMainFrame::PrepareSession()

根据m_ConfManage.m_ConfCreateInfo.dwSessionLoad的值设置哪些session需要create:m_ConfManage.m_ConfCreateInfo.pSessionCreateInfo

Q:这个dwSessionLoad的值是根据什么设置的?where?(应该来源于infowarelab.ini中的ConfRights=1048576)


7. MainFrame::CreateEx


总结:在目前为止发现,当进入MessageLoop.run()以后,才出现chat.dll被加载。这就意味着,chat.dll的加载是由某个消息引起的。

2011/12/04,再次总结:实际上是在CMainFrame.OnCreate()中完成了Thread初化及Conference Creation,其间会有Component的Create,引起DLL的load。


8. CConfMain::CreateComponent()

函数头设断点,statck的内容如下:

CConfManage::CreateComponent(const CSessionKey & {...}, const CRtString & {0x0205ac41 ""}, ISessionClient * 0x02066f40, const CInfoSID & {...}) line 2650

CConfManage::OnSessionCreateConfirm(int 0, const CSessionKey & {...}, const CRtString & {0x0205ac41 ""}, ISessionClient * 0x02066f40) line 874 + 30 bytes
CConference::HandleSessionCreateIndicate(CInfoSvrSessionCreateIndicatePdu * 0x0205fc90) line 1800 + 54 bytes
CConference::OnReceiveData(CRtMessageBlock & {...}) line 1404
CConfConnection::OnReceiveData(CRtMessageBlock & {...}, IConnection * 0x0205ff64) line 170
CRtIMConnection::OnReceive(CRtMessageBlock & {...}, IRtTransport * 0x0205eb18, CRtTransportParameter * 0x00000000) line 890 + 50 bytes
CRtEventOnReceive::OnEventFire() line 375 + 50 bytes
CRtEventQueueBase::ProcessOneEvent(IRtEvent * 0x020633f8) line 229 + 12 bytes
CRtEventQueueBase::ProcessEvents(const std::list<IRtEvent *,std::allocator<IRtEvent *> > & {...}) line 217
CRtReactorBase::ProcessHandleEvent(void * 0xffffffff, long 256, int 0, int 1, int 0) line 324 + 18 bytes
CRtReactorWin32Message::Win32SocketWndProc(HWND__ * 0x00be0606, unsigned int 1058, unsigned int 4294967295, long 256) line 115
USER32! 77d18734()
USER32! 77d18816()
USER32! 77d189cd()
USER32! 77d196c7()
WTL::CMessageLoop::Run() line 468 + 15 bytes
Run(char * 0x00151f28, int 1) line 207 + 11 bytes
LaunchConf(HINSTANCE__ * 0x00400000, char * 0x00151f28, int 1) line 318 + 13 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00151f28, int 1) line 85 + 20 bytes
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c817077()


从这里看,这是在响应SessionCreate

Q:SessionCreate是在什么时候发出的?


9. CManageBase::CreateComponentBase

这是真正完成component生成(加载)的地方


加载DLL

完成Component对session的attach及enroll


以下statement

if(InsertObject(hParent, GetDllPath().c_str(), sessType))

产生以下info:

Loaded symbols for 'E:\projects-workspace\box-4.2-UCP-4.5-0429\bin\dlls\Debug\rtchat.dll'
$20111120 09:45:59.890 19300/19296 info: CHAT MODULE LOADED ...... 
$20111120 09:45:59.890 19300/18520 WARN: CRtTransportTcp::Recv_i, recv() failed! fd=0xdf8 err=10053:您的主机中的软件放弃了一个已建立的连接。
 this=0x2074658
$20111120 09:45:59.890 19300/18520 info: CRtTransportBase::OnClose, fd=0xdf8 sink=0x2074514 this=0x2074658
$20111120 09:45:59.890 19300/18520 info: CRtConnRlbTcpClient::OnDisconnect, reason=20001 trpt=0x207465c status=5 this=0x2074510
$20111120 09:45:59.890 19300/18520 info: CRtReactorWin32Message::Win32SocketWndProc, handle is closed. fd=0xdf8 mask=0 nErrorCode=0 lParam=32 rvError=20003
$20111120 09:45:59.890 19300/18520 WARN: CRtReactorBase::ProcessHandleEvent, handle not registed. aFd=0xdf8 aMask=128 aReason=20003 rv=10011
$20111120 09:45:59.968 19300/19296 info: Chat AddUser, index: 0, id: 0, id: 0, Name: 没有人


总结:下一步搞清CreaeSession是什么时候发出的。


10. CConfManage::CreateAllSessions


CConfManage::CreateAllSessions() line 2911
CConfManage::OnConferenceJoinConfirm(int 0, const CInfoSID & {...}, const CInfoSID & {...}, const CInfoSID & {...}, unsigned long 1) line 788 + 11 bytes
CConference::HandleEnrollConfRspn(CInfoSvrEnrollConfRspnPdu * 0x0205d468) line 1597 + 79 bytes
CConference::OnReceiveData(CRtMessageBlock & {...}) line 1374


11. IConference::JoinConference 

Q:IConferfence的实现类?


12. CConfManage::CreateConference

CConfManage::CreateConference() line 2368

CMainFrame::OnCreate(unsigned int 1, unsigned int 1, unsigned int 1, unsigned int 1) line 1879
CMainFrame::ProcessWindowMessage(HWND__ * 0x00210c9a, unsigned int 1, unsigned int 0, long 1269856, long & -858993460, unsigned long 0) line 138 + 37 bytes


结论:在CMainFrame.OnCreate中,conference被创建。(6:30-10:30)


13. 几个重要类的关系

CConferenceManage::CreateConferece发起IConference实例

CConfProvider::CreateConference()完成实例的构造,并且向此IConference传递一个IConferenceSink(就是CConferenceManage本身)

CConfProvider实际为一个Factory.


INT CConfManage::CreateConference() 
{
   ......
   nResult = IConference::CreateInstance(m_ConfCreateInfo.confID, m_ConfCreateInfo.userInfo.GetImUserId(),this, m_pConference);
   ......
}


RtResult IConference::CreateInstance(

const ConfID_Type& confID, 
const CRtUserID& userID,
const IConferenceSink* aSink,
IConference*& outConference)
{
return CConfProvider::Instance()->CreateConference(
confID, userID, aSink, outConference);
}


Q:Why在workspace中找不到CConfProvider的定义?

   A:启用auto_build_client DSW,能找到,并且能到IConference的实现类CConference. VERY GOOD !

   把CONFCLI项目加入到当前DSW,可跟踪也。


Tips

* 断点管理:Edit/Break或^B或ALT+F9

* DLL中的断点要在DLL加载后生效。

* 主窗口显示完毕后,rtChat.dll已经被loaded。


14. ConfManage::CreateConference()


steps: 

Leave Conference // send PDU to server                                                    Q:真正传输了信息到Server端?如何完成的?经过中间哪些线程及类的方法处理?

IConference::CreateInstance(生成CConference实例)

Join Conference // send PDU to server


15. ConfManage::OnConferenceJoinConfirm()

STACK AS FOLLOWS:


CConfManage::OnConferenceJoinConfirm(int 0, const CInfoSID & {...}, const CInfoSID & {...}, const CInfoSID & {...}, unsigned long 1) line 325
CConference::HandleEnrollConfRspn(CInfoSvrEnrollConfRspnPdu * 0x0205e118) line 1597 + 79 bytes
CConference::OnReceiveData(CRtMessageBlock & {...}) line 1374
CConfConnection::OnReceiveData(CRtMessageBlock & {...}, IConnection * 0x0205ef94) line 170
CRtIMConnection::OnReceive(CRtMessageBlock & {...}, IRtTransport * 0x0205dd98, CRtTransportParameter * 0x00000000) line 890 + 50 bytes
CRtEventOnReceive::OnEventFire() line 375 + 50 bytes
CRtEventQueueBase::ProcessOneEvent(IRtEvent * 0x0205de30) line 229 + 12 bytes
CRtEventQueueBase::ProcessEvents(const std::list<IRtEvent *,std::allocator<IRtEvent *> > & {...}) line 217
CRtReactorBase::ProcessHandleEvent(void * 0xffffffff, long 256, int 0, int 1, int 0) line 324 + 18 bytes
CRtReactorWin32Message::Win32SocketWndProc(HWND__ * 0x000700d0, unsigned int 1058, unsigned int 4294967295, long 256) line 115
USER32! 77d18734()
USER32! 77d18816()
USER32! 77d189cd()
USER32! 77d196c7()
WTL::CMessageLoop::Run() line 468 + 15 bytes
Run(char * 0x00151f28, int 1) line 207 + 11 bytes
LaunchConf(HINSTANCE__ * 0x00400000, char * 0x00151f28, int 1) line 318 + 13 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00151f28, int 1) line 85 + 20 bytes
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c817077()



【计算机科学导论实验】加法图灵机模拟 题解 本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。 阅读详情

相关推荐

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

wifi连接失败的reason

esp32学习: 在scan例程中,调试sta模式下连接失败的原因: 1、一开始以为连接失败的话,会在conenct接口esp_wifi_connect()的返回值里返回原因 经过分析,这个接口一般返回的是0,及时是找不到ssid,或者密码错误 2、后来在event事件的SYSTEM_EVENT_STA_DISCONNECTED中发现,连接失败的原因在event时间成员里: ...

yudelian的博客 1万+

DDR5内存Training全解析:从信号完整性到CS训练模式的实战指南

本文深入解析了DDR5内存Training的全过程,从信号完整性挑战到CS训练模式(CSTM)的实战应用。文章详细阐述了Training在DDR5高频时代的关键作用,对比了In-Band与OOB两种架构,并拆解了Intel MRC的核心训练步骤,为硬件与固件工程师提供了诊断与优化系统稳定性的实用指南。

weixin_29252171的博客 1028

ClientDisconnectionReason(客户端断开原因)

1.BAN 系统响应超时,稍后再试 2.IDLE         因为时间太长,这是闲置的断开连接的客户端。连接超时,取决于服务器的设置 3.KICK       客户端被踢出,踢可以自动发生 4.MANUAL      手动从服务器端断开客户端 5.UNKNOWN 发生了一个通用的网络错误,和客户端无法确定该断线原因。服务器端日志应检查可能的错误信息或警告 ...

ABoLuoTaMei的专栏 1527

避坑!!!Stata双重机器学习(DML)遇到的问题及解决方式

除了上述代码,我还在Anaconda Navigator图形界面来更新conda,更新过的小伙伴应该都知道,这个过程非常漫长,我大概经历了2-3天,在这个过程中电脑一直运行,但是很不幸,无论哪种方式,最终都没有更新到最新版本。安装成功之后,我抱着试一试的心态再次在stata18MP中运行,没有想到,这次竟然运行成功了!我之前一直用的是stata17MP版本,在运行DML的时候,代码一直出错,我以为是python路径没有设置好的原因,就各种在python上面下功夫,经过各种查找后,确定DML必须要在。

王樰沫 3845

Claude Skills 深度讲解

阶段 1:Function Call(2023)├─ 大模型可以调用外部工具├─ 问题:缺乏对任务的深度理解└─ 局限:工具调用简单线性阶段 2:MCP 上下文工程(2024)├─ 大模型有了更丰富的上下文和工具├─ 问题:仍然需要手动编写复杂的 Prompt└─ 局限:每次对话都需要重新加载上下文阶段 3:Claude Skills(2025)├─ 大模型有了「能力模块」的概念├─ 可以动态加载、组合、执行专门的工作流├─ 真正实现了「知识的模块化和复用」

u013134676的博客 1464

UC故事 2011/11/24

1. Chat Module接收信息,并演示到UI上面的全过程: STACK TRACE: CChatMainDlg::ReceiveMessage(unsigned long 19923456, WTL::CString & {...}, WTL::CString & {...}, int 1, _charformatw * 0x00119fa8) line 589 CChatMainDl

printf1998的专栏 998

如何用ISBN API快速获取图书信息?Python实战教程(附完整代码)

本文是一篇Python实战教程,详细介绍了如何利用ISBN API高效获取图书元数据。内容涵盖从API服务选择、密钥管理,到使用requests库构建健壮的请求模块,并利用Pydantic进行数据验证与解析。教程还提供了批量查询、缓存优化及集成到Flask Web应用等高级技巧,帮助开发者快速实现图书信息的自动化获取与处理。

p8q9r0的博客 455

UC故事2011/11/30

今日之事 * 文档完成 * Jiarong例子 * test的例子   1. CRtThreadManager * class definition class RT_API_EXPORT CRtThreadManager  {  ....  static CRtThreadManager* Instance();

printf1998的专栏 1014

SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序

在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...

李威威wiwi的博客 5069

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧!

通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性

GBupupup的博客 3785

UC故事 2011/11/20 - 2

1. server信息如何传递到client应用层? void CConference::OnReceiveData(CRtMessageBlock& data) { CRtAutoPtr decPdu; RtResult ret = CInfoSvrPduBase::DecodePdu(data, decPdu.ParaOut());         .... CInfoSvrPdu

printf1998的专栏 331

YOLOv13涨点改进| CVPR 2026 |独家创新首发、主干改进篇 |利用RIS-PiDiNet主干让YOLOv13更加强大!适合遥感目标检测、小目标检测、旋转目标检测,变化检测,图像分割涨点

🔥本文提出了一种改进的RIS-PiDiNet主干网络,通过引入几何先验构建几何一致性检测器,显著提升了模型在任意方向、结构规则目标场景下的检测性能。包含两个核心模块:S-PDC利用极谐变换的谐波核建模目标结构对称性,RIS-PDC通过SO(2)群平均实现旋转不变性。网络采用基于RIS-block的主干结构并融合轻量级LBP特征,增强了细粒度结构表达能力。实验表明,该方法特别适用于遥感和复杂几何分布场景,能有效提升目标检测的鲁棒性和精度。文章还详细介绍了如何将RIS-PiDiNet集成到YOLOv13框架

Ai缝合怪、助力小伙伴高效发论文 90

UC故事 2011/11/15

1. WTL * STL, ATL, WTL STL系标准模板库,主要提供算法、容器(Vector, List)等基础类服务, HP支持,C++类库,已经标准化 ATL:Active Template Lib,微软支持,主要提供对COM对象的开发,但缺少UI方面的支持 WTL:Windows Template Lib,微软支持,基于ATL,提供UI(窗口)支持,并有类似于MFC一样的应用

printf1998的专栏 1623

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

UC故事 2011/11/21

### 研究client framework ### 1. Create Conference Q:在Create Conference的时候,会向Server发PDU吗?   ### 研究Chat module ###  1. Chat消息发送过程 * 相关类 CChatMainDlg CChatSession ISessionClient CConference CCo

printf1998的专栏 479

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

UC故事2011/11/19

### 文档阅读 ### 1. ApplicationFrame.doc Q:一个Client上的每一个component都会发出一次enroll请求? Q:What is resource update exactly ? * 几个概念关系 ConferenceManage -> ComponentManage -> ComponentContainer -> Componen

printf1998的专栏 534

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

UC故事2011/11/22

1. Session模块研究 * CUpdateType typedef enum {  UPDATE_TYPE_ADD,  UPDATE_TYPE_REMOVE,  UPDATE_TYPE_MODIFY,  UPDATE_TYPE_SUB,  UPDATE_TYPE_UNSUB,  UPDATE_TYPE_UNKNOW = 100 }CUpdateType;   * CC

printf1998的专栏 479

UC故事2011/11/17

### 搞定UCP4.5-0429开发环境(home) 1. info server * 直接F5 $20111117 18:57:53.828 2264/12320 ERROR: CRtAcceptorTcp::StartListen, bind() failed! addr=192.168.1.100 port=1224 err=10049:在其上下文中,该请求的地址无效。

printf1998的专栏 770

UC故事2011/11/26

1. 开发环境恢复 * 处理Info/controller启动问题:Bind $20111126 17:24:29.062 16496/16684 ERROR: CRtAcceptorTcp::StartListen, bind() failed! addr=192.168.1.101 port=1224 err=10048:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

printf1998的专栏 877

UC故事2011/11/29

1. Reactor * CRtReactorBase::ScheduleTimer RtResult CRtReactorBase:: ScheduleTimer(IRtTimerHandler *aTh, LPVOID aArg,      const CRtTimeValue &aInterval, DWORD aCount) {  m_Est.EnsureSingleThre

printf1998的专栏 556

UC故事2011/11/27 - 1

1. 关于connection的定时器 #define TIME_CONF_CONNECT_TIME                (1000 * 30) 改成 #define TIME_CONF_CONNECT_TIME                (1000 * 5) 试试效果,看5秒的效果是什么。 注:结果没有什么感觉,恢复原值。 2. CRtReactorBase

printf1998的专栏 634

UC故事2011/11/27 - 2

1. 再次研究线程 * 线程种类     typedef int TType;     enum     {         TT_MAIN,         TT_NETWORK,         TT_DNS,                      // Q:for what ?         TT_CURRENT,           // Q:for what?

printf1998的专栏 906

UC故事 2011/11/16

Build/run Box4.2.0.0.2 1. source code D:\study\uc-study-workspace\ER-InfoServer-box-4.2.0.2-110214-1459\ 2. workspace :: entry app client: ROOT/confapp/conf-client.dsw / confmain

printf1998的专栏 410

UC故事2011/10/11

1. HTTP review * HTTP1.1 vs HTTP 1.0 使用一个TCP Connection处理多个到同一Server的请求 * HTTP Methods Safe methods: HEAD, GET, OPTIONS, TRACE Unsafe m

printf1998的专栏 405

UC故事2011/11/25

1. 近日做的事 启动过程的UI如何呈现的? 启动完成后,client里出现的重要线程、类实例? CConfSession为什么会有一个IClientSink的实例(CConfSession本身就是一个IClientSink)? Q:WSAAsyncSelect是如何被注册的?WSAASyncSelect在哪里调用?    A:RtResult CRtReactorWin32AsyncS

printf1998的专栏 333

UC故事2011/11/18

### 研读核心类 1. ConfManage 2. CMainFrame 3. CXXXView   Q:有时找不到标识符定义?      A:应该是因为相关DLL的符号表在build时未导入(即使用Release而非Debug方式build的) 2011/12/02 Q:有时不能设断点?      A:应该是相关DLL尚未load  2011/12/02 Q:CD

printf1998的专栏 290
上一篇: UC故事2011/11/19
下一篇: 读书时间 2011/11/20
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值