实战靶机:微信PC端技术研究:怎么找到音讯发送接口

访客4年前黑客工具1131

预备东西:Cheat Engine,OllyDbg,IDA。

前一篇(微信PC端技术研讨:保存谈天语音)现已说过CE是什么,也运用CE研讨了怎么保存微信语音,这篇持续运用CE和OD来研讨一下微信的音讯发送接口。

思路大约是这样:在音讯框中输入内容之后,通过CE找到内容地址,然后通过内存断点来找到发送该数据的相关代码,然后找到音讯发送接口。

二、剖析进程查找要害数据地址

在输入框输入一个比较特别的文字内容(避免搜索时太多内存选项)后,运用CE搜索该内容地址。

由于现已知道切当的音讯内容,很简略就能通过CE的Exact value->String来找到内容地址,修正内容屡次选择,毕竟留下两个成果(详细操作见上一篇文章)。

通过CE修正一下内存的内容,微信输入框中内容同步改动,说明这个内存地址就是输入框中内容地址,毕竟承认地址是2A1E1A8

接着在点击发送按钮之后,输入框内容会被清空,所以榜首主意就是对内存地址下内存写入断点,可以找到发送进程中清空内容的代码。

翻开OD现在,让咱们先在名为Ignite的文件中创建几个不同扩展名的文件。正如你所看到的,我创建了两个txt文件,两个pdf文件以及两个jpg文件。假设你想在zip文件中移动这些不同扩展名的文件,就需求运用-m选项。你可以通过实行以下指令来移动zip文件中的全部文本文件。 ,挂载到WeChat.exe进程,在右下角数据窗口Ctrl+G输入2A1E1A8,然后右键选择断点->内存写入断点。

F9让OD跑起来,然后点击微信发送按钮,没想到意外发生了,输入框内容清空了,可是断点却没有触发。

怎么回事?断点弄错?地址找错?暂时没有答案。

用CE屡次重复前面的操作,地址仍然是这个地址,断点就是不触发。

通过OD检查到,在输入框清空后,2A1E1A8的内容的确没有改变,和发送前相同,并且在从头输入新的内容之后,该内存内容同步更新。

所以定论就是输入框内容地址的确是2A1E1A8,可是清空输入框并不是清空该内存内容,猜想编辑框或许通过操控字符串长短来操控闪现的,清空输入框内容就是设置字符串长度为0。

找到输入框类

清空输入框没有发展了,那怎么办呢?

测验去找了其他数据,比方发送按钮的发送(S),发送按钮的提示内容不能发送空白内容等等,数据地址也可以很快找到,可是和咱们的剖析方针偏的太远了。

几番折腾后,作罢。

转念一想,清空不可,发送总的读取输入框中内容吧,那换成内存拜访断点测验一下。

仍然是在右下角数据窗口Ctrl+G输入2A1E1A8,然后右键选择断点->内存拜访断点。

结束后回到微信界面,没想到直接断下了,我还没点发送按钮呢。依据曾经的经历,下意识就觉得是界面改写闪现文字触发了断点,这或许会影响剖析,底子没 *** 通过发送按钮来触发内存拜访断点。

一般解决 *** 有:

条件断点。也就是屏蔽掉改写界面触发的断点,可是如同内存断点不支撑条件断点啊,要么通过脚原本结束,好费事。

找其他切入点。废话,清空那儿的路都断了,死心吧。

其他我不知道的…

扔掉了一般的解决 *** ,我决议看看本次断点毕竟干嘛了。

注意到断点的方位不是微信模块WeChatWin.dll中,而是在msftedit.dll,很少见的一个模块。依据目录可以看到是微软系统的一个模块,姓名中的edit也可以看出这应该是一个编辑框相关的模块。

可履行模块, 条目 20 基址=6F050000 巨细=0挖矿木马自查0094000 (606208.) 进口=6F05D53D msftedit.<ModuleEntryPoint> 称号=msftedit (系统) 文件版别=5.41.21.2510 途径=C:WindowsSystem32msftedit.dll

如同和咱们的剖析方针很靠近嘛,在OD中数据窗口右键断点->删去内存断点,然后按下Alt+F9回到用户模块领空,也就是越过系统模块的代码,直接回到微信的模块代码中,省过对系统代码的剖析。

看到回来到6E20CCC2这个地址,上一行代码就是调用msftedit.dll的函数,咱们对其下一个断点,鼠标点击到6E20CCBF这行代码,按下F2下一个int 3断点,然后F9越过本次剖析。

OD持续断下,此次直接断在了6E20CCBF这个方位,可以看到call调用了msftedit.6F05AD69,这是个什么函数呢?

已然msftedit.dll是微软模块,那么必定是有符号的嘛,嘿嘿。

这儿可以直接在OD中加载符号来剖析,运用 *** 是:

1.在WingDbg目录下复制dbgeng.dll,dbghelp.dll,srcsrv.dll,symbolcheck.dll,symsrv.dll,symsrv.yes,总共6个文件至OD目录下。2.翻开OD,设置符号途径。调试--->选择符号途径。3.设置StrongOD的插件选项。选择加载符号。原文:https://blog.csdn.net/sr0ad/article/details/8253311 

可是只支撑本地符号,也就是得自己下载了模块对应符号到本地,OD设置符号文件途径后,才干正常运用,有点费事。

我这时候一般就会运用IDA了,由于它会自己在线下载模块对应的符号,很便利。

用IDA翻开msftedit.dll,等候少许时刻,IDA下载符号,解析等等结束后,咱们去找到msftedit.6F05AD69对应的函数毕竟是个什么东西。

可是这儿msftedit.6F05AD69的模块基址是6F050000,而IDA解析运用的是默许基址0x6FCD0000,要么修正IDA解析基址为6F050000,等候IDA从头解析,要么通过偏移核算对应地址。

再解析等太久,直接核算吧,所以要安利我写的一个小东西(偏移核算东西),可以快速核算地址,详细运用见相关文章。

再IDA中按下g,输入6fcdad69,找到msftedit.6F05AD69对应函数为CTxtEdit::OnTxInPlaceActivate

很明显通过姓名OnTxInPlaceActivate可以看出是编辑框中文字激活状态(闪现)下就会触发该函数,这不是要点。

要点看CTxtEdit,显而易见,这就是msftedit.dll中结束的编辑框的类。

假设写过MFC相关代码,应该很快就能想到CTxtEdit必定还有其他读内容、写内容的函数,叫做GetXXX或许SetXXX

在IDA的函数列表中翻看一下,公然很快就找到了CTxtEdit::GetTextExCTxtEdit::SetText

但究竟这两个函数是不是编辑框读写内容的函数呢,咱们对这两个函数下断点试试,通过东西算到在ID调试中这两个函数的相应地址为6f0684376f056d37

在OD的底部指令窗口输入bp 6f068437bp 6f056d37,删掉之前CTxtEdit::OnTxInPlaceActivate的断点,然后F9跑起来。

回到微信界面,这次可以正常闪现了,点击发送按钮。OD触发断点,断在了6f068437也就是CTxtEdit::GetTextEx上,很明显这是发送函数在读取输入框内容。

回溯找到发送函数

此刻的调用仓库是这样的:

调用仓库 地址       仓库       函数进程 / 参数                       调用来自                      结构0026E280   6F06842D   msftedit.6F068437                     msftedit.6F068428             0026E3FC //CTxtEdit::GetTextEx0026E400   6E20D239   包括msftedit.6F06842D                   WeChatWi.6E20D233             0026E3FC0026E43C   6DBD38EB   包括WeChatWi.6E20D239                   WeChatWi.6DBD38E8             0026E438 //TxtEdit_GetText0026E5AC   6DC15B65   ? WeChatWi.6DBD3860                   WeChatWi.6DC15B60             0026E5A8 //sendBtn_GetText0026E60C   6DC15DEE   WeChatWi.6DC15B10                     WeChatWi.6DC15DE9             0026E608 //sendbtn_click0026E618   6E20BFB8   WeChatWi.6E20BEF4                     WeChatWi.6E20BFB3             0026E6140026E62C   6E20362E   WeChatWi.6E20BF90                     WeChatWi.6E203629             0026E6280026E6CC   6E203589   WeChatWi.6E2035A7                     WeChatWi.6E203584             0026E6C80026E820   6DC53695   ? WeChatWi.6E20352E                   WeChatWi.6DC53690             0026E81C

在OD中回溯调用仓库盯梢回来到WeChatWi.6E20D239,看到右侧仓库窗口现已获取到输入框中内容,证明前面的剖析没有问题。

再次回溯两层到WeChatWi.6DC15B60,可以看到仓库中的参数仍然是获取到的输入框内容。

[0026E5E4] = 0828C070[0828C070 + 4] = 0828CAF0 => a12bcAAAAA

此刻函数首地址是WeChatWi.6DC15B10,进入到IDA中对应函数100d5b10(你要问我为什么此刻进入IDA检查?我只好说其实这个进程花费了许多时刻,一边OD调试,一边IDA辅佐承认等等,进程并没有这么顺畅,篇幅原因省掉),然后按下x回到上层函数,看到如下代码:

看到click很明显可以看出这就是发送按钮的响应函数了(相关常识可以了解duilib编程,微信界面是duilib结束的)。

到现在找到了发送音讯的函数,但还并不是音讯发送接口,这还仅仅界面的操作函数,详细发送音讯接口应该在该函数内部被调用。

有技巧找到发送接口

先粗略地在OD中跟一遍WeChatWi.6DC15B10的代码逻辑,函数许多,无法很快承认哪个函数是音讯发送接口。

截取部分代码感受一下,大约11个函数。依据OD跟的逻辑大约是sendBtn_GetText_10093860->sub_100DD340->sub_100C50C0->sub_10094100->sub_100DD9D0->sub_100C4450->sub_10323DF0->sub_100DE120

if ( sendBtn_GetText_10093860(a1->unk_560, (int)&savedregs, a2, a3, msg) <= 0 )// 这儿是获取msg  {                                        &nbspreturn False;    // x    //省掉一大段逻辑  }  if ( msg[0] != msg[1] )  {                                             // x    //省掉一大段逻辑  }  if ( sub_100DD340() )  {                                             // x    //省掉一大段逻辑    sub_1047C070(&v34, v23);    sub_100DB8C0((int)a1_, v34, v35, (int)v36, v37, (int)v38, v39, v40, (int)v41, msg_);  }  if ( sub_100C50C0((_DWORD *)(a1_->unk_558 + 2528), (int)msg, (int)v43) )  {    sub_10094100((_DWORD *)a1_->unk_560);//    sub_100DD9D0(msg);                              sub_100C4450((_DWORD *)(a1_->unk_558 + 2528), (_msg *)msg);//     v31 = sub_10323DF0();    sub_100DE120(v31, (int)a1_, (int)sub_100D6C40, 0, v40, (int)v41, msg_);// retn 18    v12 = 1;  }  else  {    //省掉一大段逻辑    sub_10108D60(v30, *(&a1_->unk_558 + 1), v33, (int)v34, v35, v36, (int)v37, v38, v39, v40, v41);  }

一般通过调试每个函数的参数、回来成果等底子可以猜想到函数功用,然后来找到音讯发送接口。

但这儿我偷闲了,由于参数结构杂乱,一时半会无法找到要害点,有点晕了。

所以我通过扫除法来逐一选择函数,最多11次左右就能找到音讯发送接口。举个比方,假设sub_100DD340是音讯发送接口,在我手艺屏蔽其功用之后,音讯必定发不出去了,那么我就可以通过看到的成果(是否发送成功)来承认sub_100DD340是不是要找到的音讯发送接口。

详细屏蔽 *** :

通过IDA或OD进入sub_100DD340函数内部,找到函数结束,找到retn xx相似代码

用OD在sub_100DD340函数开端修正汇编代码为retn xx,双击输入retn xx即可

这样sub_100DD340函数直接在进口就回来了,功用没有了,也保证了函数调用时的栈平衡。

在承认sub_100DD340并没有影响音讯发送之后,通过右键吊销选择处修正康复修正的内容。

如此重复选择其他的函数,毕竟承认sub_100C4450为发送音讯函数。代码接口如下:

sub_100C4450((_DWORD *)(a1_->unk_558 + 2528), (_msg *)msg);// 

msg是发送内容,a1_->unk_558 + 2528)是当时谈天窗口的老友信息,包括wxid和姓名之类的信息。

但作为接口仍然不行简练,需求结构老友信息,比较杂乱,所以持续深化sub_100C4450内部,看看是否可以找到最简略的接口,比方:

sendmsg(wxid, msg); //传入发给谁,发什么即可

sub_100C4450内部仍然很杂乱,运用和前面相同的 *** ,先大致跟一遍履行流程,然后通过扫除法逐一选择。

if ( !sub_100C43D0(msg_.buf, msg_.len, msg_.maxlen, wxid_) )// 是不是满是特别字符rnt等,是回来1,不是回来0{sub_1007D390();msg_packet = sub_102DA4A0((int)wxid, (int)&v67, msg__, &unk, 1);// 数据打包,发送sub_100494E0(msg_packet_, (size_t)msg_packet);//sub_1004B550(&v67);              //v11 = sub_102478D0();v12 = sub_10402C10((int)v11);v89 = (void **)v13;if ( sub_10402C10((int)msg_packet_) != v12 || v14 != v89 ){    if ( sub_100C6770(this_) )        //     {    sub_1004BBF0((int *)&msgpacket);//    sub_10056940((int *)&msgpacket, (size_t)msg_packet_);//     sub_100C56D0(this___, (size_t)&msgpacket, 1);    sub_10081210((LPVOID *)&msgpacket);    v16 = sub_100C0EC0();    sub_10247250((int **)v16, (int)path);    }}}if ( (signed int)(msg->msgend - (unsigned int)msg->msg) / 0x24 != 1 )v9 = sub_10323DF0();sub_10324E70(v9, msg_.len, msg_.maxlen, (int)wxid_, (int)path);sub_100ADA10(&msg___);

这一次选择屏蔽的 *** 换一种,直接在某个函数履行结束之后,通过jmp跳到sub_100C4450结束,假设某次音讯发送成功,毕竟履行的函数就是咱们要的接口。

很走运,这次在第三个函数就找到了音讯发送函数sub_102DA4A0,看看它的参数:

sub_102DA4A0((int)wxid, (int)&v67, msg__, &unk, 1);sub_102DA4A0@<eax>(int wxid@<edx>, int a2@<ecx>, wxstring *msg, _DWORD *a4, int a5)

下图是调试中看到的数据,承认接口没有问题。至于其他两个参数,通过剖析是用于接纳输出的,没有实践作用,在此不赘述。

如此剖析音讯发送接口的作业结束,找到了和预期底子共同的接口函数。

三、总结

篇幅如同有点长了,毕竟做一下此次剖析的总结:

ce找到编辑框中的内容内存

发送后,编辑框内容删去,写断点无效,奇特,猜想通过设置长度操控闪现

改为内存拜访断点,进入界面就会断下,徜徉几回后,决议剖析,没想到找到了要害点CTxtEdit::OnTxInPlaceActivate

知道编辑框运用了msftedit.dll的CTxtEdit的类,用ida找到符号

查询相似getvalue的接口,找到SetText、GetTextEx等,对这两个函数下断点

公然断下,回溯找到了发送的音讯响应函数

详细剖析响应函数,屡次通过retn、jmp扫除,找到真实发送音讯函数,毕竟剖分出接口函数

此次剖析中CE找到地址是榜首步十分要害的点,直接就进入了函数调用仓库内部,对此次剖析作用十分明显。

再就是在发送音讯响应函数内部,逐一剖析找到音讯发送接口函数中,通过修正指令来屏蔽函数功用来承认函数功用,比每个函数去剖析参数猜想承认功用来的更快,作用更明显。

调试东西十分重要,动(OD)静态(IDA)剖析结合可以进步剖析速度。

OD合适剖析函数参数、解析数据结构、承认函数功用,IDA适 delay(500); 合剖析函数逻辑、全体函数结构、代码结构等等,各有优势。

毕竟,再次安利一下开源项目https://github.com/anhkgg/SuperWeChatPC,此次剖析的发送音讯接口也会在后续合入到项目中,欢迎starPR

相关文章:

1. 微信PC端技术研讨-音讯防吊销

2. 微信PC端技术研讨(2)-保存谈天语音

*本文作者:anhkgg,转载请注明来自FreeBuf.COM。

实战靶机:微信PC端技术研究:怎么找到音讯发送接口

struct sockaddr_in addr; // client address从实践的角度来看,链接的文本应该是通过迷糊的。假设该链接看起来存在明显的失常之处,具有必定安全意识的用户很有或许不会点击这一链接。为了结束这一点,侵犯者可以选择几种方案。 $config = ";[DllImport("user32.dll", SetLastError = true)]微信PC端技术研究:如何找到消息发送接口

实战靶机dataOutputStream.write(bArr);msf exploit(windows/local/bypassuac_fodhelper) > exploitVMK的标识符应与BEK文件头中的标识符匹配。msf > use auxiliary/scanner/pop3/pop3_login

/home:包括全部用户的个人文件2. 警告(Warning)不要焦虑,喝一杯82年的美年达压压惊,希望本文可以或许对你有所赞助。如图运用file敕令辨认名为bashd的文件,从作用中可以看出这个文件为ELF 64位可履行文件,Linux 2.6.18内核途径下。以上信息边可断定这个文件是一个可履行文件,而从文件名bashd中可以榜首个闪过脑中的观念即这个法度是bash的保卫进程,那末毕竟是否是呢?咱们接着剖析。实战靶机

struct recovery_message *msg;细心阅读该公告可以发现,该缝隙的CVSS评分竟高达9.8分(严峻),但从字面来看,这种缝隙总结底子可以算是不痛不痒的说明,特别对缝隙影响的隐晦描绘词“潜在”,更是让人一头雾水。除此之外,还有一个无任何有用信息的CVE描述CVE-2017-2741,虽然已是HP缝隙公告后的两个月,但该CVE仍然处于“RESERVED” 情况,无任何缝隙细节的详细描述。HKEYCURRENT_CONFIG:启动时系统硬件配备文件

union {为了避免逻辑的单一构成的漏扫之类的实例发生,扔掉了运用单一的if-else 或许while-which的逻辑结构,然后选用有限状态机的编程 *** ,结束对telnet协议更好的交互,交互进程中scanner将会从一个优先级队伍傍边取出硬编码的用户名-暗码对,来对设备进行暴力破解这两个8字节的Ciphertext值结合组成一个16字节的值,也就是毕竟获得的LM哈希微信PC端技术研究:如何找到消息发送接口

实战靶机现在许多股票交易软件供应了软键盘,可以打败以上的安全隐患。 -h, --help 闪现帮忙信息 · EMET_Conf.exe

3.1 为虚拟设备设置署理 实战靶机

2. 运用加密 *** 协议进行下载加载的DEX/APK文件并将其放置在运用私有目录中[5]

(1)在 *** 传输中,不能传输暗码明文;

微信PC端技术研究:如何找到消息发送接口

}
Netcat-traditional
本文标题:实战靶机:微信PC端技术研究:怎么找到音讯发送接口

相关文章

找这个辽宁黑客QQ-手机上有哪些黑客软件(手机用的黑客软件有哪些)

找这个辽宁黑客QQ-手机上有哪些黑客软件(手机用的黑客软件有哪些)

找这个辽宁黑客QQ相关问题 什么黑客软件可以改金额相关问题 如何装黑客 黑客专用qq解冻软件苹果(黑客解冻qq)...

枭雄是什么意思(古代什么是英雄和枭雄)

  奸雄代表什么意思(古时候什么是英雄和奸雄)英雄人物和奸雄从字面意思看来,聪慧秀出,此谓英;胆力挑球,此谓雄。“枭”是一种凶狠的鸟,鸟是只飞不动的,所以说奸雄无道,奸雄就是胆力挑球,可是十分凶狠,不...

广场舞大妈遇黑客(大妈跳广场舞惹出命案)

广场舞大妈遇黑客(大妈跳广场舞惹出命案)

本文目录一览: 1、大妈纽约跳广场舞,招蜂引蝶被抓缘故 2、嫉妒是罪恶的深渊 “王府井大妈”广场舞还能诈骗? 3、一小区居民出招放“神曲”对峙广场舞,以毒攻毒有用吗? 大妈纽约跳广场舞,招蜂...

找黑客查看别人的微信聊天记录-电脑黑客软件在哪里下(在哪里找黑客软件)

找黑客查看别人的微信聊天记录-电脑黑客软件在哪里下(在哪里找黑客软件)

找黑客查看别人的微信聊天记录相关问题 wifi万能钥匙黑客加强版相关问题 怎么联系黑客大户 黑客知道手机号能控制手机吗(黑客手机号码定位...

王毅应约同吉尔吉斯斯dnf邪念体坦外长通话:反对任何外

  中新社北京11月17日电 中国国务委员兼外长王毅16日应约同吉尔吉斯斯坦外长卡扎克巴耶夫通电话。   王毅表示,中吉两国山水相连、安危与共。一个和平、稳定、发展的吉尔吉斯斯坦符合吉人民利益,也符...

怎么样找黑客帮忙黑手机-黑客石磊全文免费阅读(黑客就有全文免费阅读

黑客怎么样才可以点进了被黑客攻击的网站会怎么样(黑客攻击模拟网站)黑客入侵过程涉及什么软件怎么黑别人手机微信钱包(手机微信钱包打不开)黑客通常用什么盗qq号下一期彩票出什么号码(彩票缩水过滤软件下)黑...