YuGar9999 发表于 2022-4-29 01:38

PC端同花顺公式指标解密机制分析

本帖最后由 15523449993 于 2022-4-29 20:01 编辑

收集目标信息    :












软件名称:同花顺
主程序名称:hexin.exe
目标模块:公式指标
文件格式:HXF
提示信息:失败提示“公式密码错误,请重新输入”      成功提示“”
壳信息:压缩壳
反调试:有

选择工具:
Ollydbg(吾爱)
IDA7.6(吾爱)
PEid(吾爱)
16进制计算器


                                                                                                                                                                         正文:


附加载入程序,让程序跑起来解码,跳转到401000搜索提示信息字符串



没有搜索到字符串,转为函数做进入点。有弹窗提示断MessgaeBox,F8返回程序代码段,并在段首和MessgaeBox设下断点(防止程序不经过段首)。





成功断在段首并且堆栈发现错误信息,直接执行到段尾并返回到调用代码段,继续段首和Call下断。(直接执行到段尾是因为堆栈已经压入错误提示信息,说明调用代码已经识别出密码错误)。


成功断在段首并提示错误信息,继续执行到段尾并返回调用代码段,发现堆栈提示了一串字符“13579888”,记录下来,继续返回调用代码段并在段首和Call下断(会连续返回几次调用代码,直接换上发现字符串信息的图)



发现堆栈提示Textchanged事件信息。

继续执行发现可疑字符串“1IDJAKDPAIDBAJDBAJD”“198236‘”399170“ 记录下来继续执行。



继续执行弹出密码错误信息窗口,发现上方test对比和je条件跳转。重新执行test指令开始的代码并更改标志位测试其他结果,分析出跳向密码成功和密码失败。
   


在Test指令上方还有对比和跳转指令,重新执行整个代码段,详细分析流程。

00989D9C    8378 F4 00      cmp dword ptr ds:,0x0         ; 核心判断
00989DA0    C785 B8FDFFFF 0>mov dword ptr ss:,0x1
00989DAA    74 04         je short hexin.00989DB0                  ; 关键跳转
00989DAC    32DB            xor bl,bl
00989DAE    EB 02         jmp short hexin.00989DB2
00989DB0    B3 01         mov bl,0x1
00989DB2    C745 FC 0600000>mov dword ptr ss:,0x6
00989DB9    F685 B8FDFFFF 0>test byte ptr ss:,0x1
00989DC0    74 12         je short hexin.00989DD4
00989DC2    83A5 B8FDFFFF F>and dword ptr ss:,-0x2
00989DC9    8D8D C0FDFFFF   lea ecx,dword ptr ss:
00989DCF    E8 8C88A7FF   call hexin.00402660
00989DD4    84DB            test bl,bl
00989DD6    74 5A         je short hexin.00989E32
00989DD8    8B4D D5         mov ecx,dword ptr ss:
00989DDB    6A 00         push 0x0
00989DDD    6A 40         push 0x40
00989DDF    51            push ecx
00989DE0    E8 F65E8300   call hexin.011BFCDB                      ; 弹出错误消息


密码错误                                                                                                            
      
密码成功

初步确定这就是要定位的目标代码段,重新载入程序逆向往上分析,每一个上方Call都断点F7进入分析,断点Call出来后重新载入程序。(重新载入是为了清除内存残留数据)
一路往上分析到00989D57    E8 0489A7FF   call hexin.00402660这里会处理输入的假码存放和转存。

继续向上分析,00989D10    E8 12D98200   call hexin.011B7627         这里会弹出密码输入窗口。

这里Push EAX出现了真码的信息,上方有一个Call,F7进入。

进去一路分析到接近段尾,发现真码存放地址。

真码地址上方发现循环运算和转存的行为。分析发现真码就是由此计算出,但来源数值很可疑,继续往上分析发现还有一处循环计算和转存,也就是说是两次解密操作。
      
此处直接获得了两次解密的算法,基本确定这是一个解码的Call,但还要追踪一个问题,那便是”1IDJAKDPAIDBAJDBAJD“,继续逆向分析。
进入上一个Call发现”1IDJAKDPAIDBAJDBAJD“出现于00AF16BA    8B41 60         mov eax,dword ptr ds:处。


分析发现这个地址是存放真码的地址,重点追踪ECX。返回调用代码一眼就看到了MOV ECX,EDI,追踪ECX变成EDI。

继续分析发现EDI来源于堆栈中,追踪由EDI变为EBP。

EBP来源于ESP.....00989B91    8BEC            mov ebp,esp

MOV EBP,ESP
MOV EDI,DWORD PTR SS:{EBP+0x8}
MOV ECX,EDI
ECX+0x60=1IDJAKDPAIDBAJDBAJD的地址
08应该是一个对象,60则是这个对象的成员。


这个位置已经到达了段首,那么基本可以确定并不是在打开目标模块的时候才读取文件加密信息,而是程序在启动时便加载了文件夹里所有的HXF加密信息。源假码在启动时便压入了堆栈。
HXF文件解密的一个流程:

                                                                                                               ;软件启动获得加密文件源假码信息并把地址Push
0098BC9E    E8 EDDEFFFF   call hexin.00989B90                               ; 解密模块
00989C96    E8 35327C00   call hexin.0114CED0                              ; 两次解密源假码得到真码      
00989D10    E8 12D98200   call hexin.011B7627                              ; 弹出密码输入窗口
00989D66    8378 F4 00      cmp dword ptr ds:,0x0            ; 判断输入密码位数是否小于0
没截图                                                                                                   ;转存真假码对比结果,00 or01
00989D9C    8378 F4 00      cmp dword ptr ds:,0x0         ;cmp 对比结果,0x00
00989DAA   /74 04         je short hexin.00989DB0                           ; 跳转
00989DE0    E8 F65E8300   call hexin.011BFCDB                           ; 密码错误窗口Call

YuGar9999 发表于 2022-5-1 19:52

LLJ杰 发表于 2022-5-1 02:11
楼主能搞个源码提取软件吗

后面有对文件解密的代码块,这段时间比较忙,有空了找个时间再逆一下,争取用高级语言写出来

MrBin 发表于 2022-8-7 16:13

看不懂啊。。我想对庄家资金指标查看源代码,,看了你的教程,表示完全跟不上操作。出个视频就好了

LLJ杰 发表于 2022-5-7 01:56

henerboy 发表于 2022-5-6 21:25
杰大,廷进的公式能分享一下吗,谢谢

链接:https://pan.baidu.com/s/1NlgSjGMp6HOxah_LAsacNw
提取码:dov3

zty393 发表于 2022-4-30 19:40

好复杂,哪位大佬能看懂解释一下呗

snow城 发表于 2022-6-19 23:56

多谢分享,最好来个傻瓜式的就好了。

Hmily 发表于 2022-4-29 12:44

贴图错了,搞复杂了,你看下教程https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36 ,重新编辑下帖子吧。

oksuqianyu 发表于 2022-4-29 13:26

哥哥有内幕消息没。我缺钱了。

qq3884 发表于 2022-4-29 14:17

看起来很牛逼

LoongKing 发表于 2022-4-29 14:18

一大波韭菜要来了!

孤狼微博 发表于 2022-4-29 14:27

大概看懂了,所有的指标都是滞后的

qaws 发表于 2022-4-29 14:29

虽然不懂,手机端准备下载来试试

foresun 发表于 2022-4-29 14:36

学习学习
有个指标需要DIY。

rocyu 发表于 2022-4-29 15:15

会的多亏的多:keai

zhouxue1028 发表于 2022-4-29 15:18

哈哈。这个好啊。。。福利多多
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: PC端同花顺公式指标解密机制分析