吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18412|回复: 130
收起左侧

[原创] PC端同花顺公式指标解密机制分析

  [复制链接]
YuGar9999 发表于 2022-4-29 01:38
本帖最后由 15523449993 于 2022-4-29 20:01 编辑

收集目标信息    :
1.png

1.1.png

   3.png

1.2.png

2.png

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

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


                                                                                                                                                                         正文:


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

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

   7.png
8.png

成功断在段首并且堆栈发现错误信息,直接执行到段尾并返回到调用代码段,继续段首和Call下断。(直接执行到段尾是因为堆栈已经压入错误提示信息,说明调用代码已经识别出密码错误)。
10.png   
11.png
成功断在段首并提示错误信息,继续执行到段尾并返回调用代码段,发现堆栈提示了一串字符“13579888”,记录下来,继续返回调用代码段并在段首和Call下断(会连续返回几次调用代码,直接换上发现字符串信息的图)
12.png

13.png
发现堆栈提示Textchanged事件信息。
14.png
继续执行发现可疑字符串“1IDJAKDPAIDBAJDBAJD”  “198236‘  ”399170“ 记录下来继续执行。
15.png

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

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

[Asm] 纯文本查看 复制代码
00989D9C    8378 F4 00      cmp dword ptr ds:[eax-0xC],0x0           ; 核心判断
00989DA0    C785 B8FDFFFF 0>mov dword ptr ss:[ebp-0x248],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:[ebp-0x4],0x6
00989DB9    F685 B8FDFFFF 0>test byte ptr ss:[ebp-0x248],0x1
00989DC0    74 12           je short hexin.00989DD4
00989DC2    83A5 B8FDFFFF F>and dword ptr ss:[ebp-0x248],-0x2
00989DC9    8D8D C0FDFFFF   lea ecx,dword ptr ss:[ebp-0x240]
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:[ebp-0x2B]
00989DDB    6A 00           push 0x0
00989DDD    6A 40           push 0x40
00989DDF    51              push ecx
00989DE0    E8 F65E8300     call hexin.011BFCDB                      ; 弹出错误消息


密码错误                                                                                                            
失败.jpg         
密码成功
成功.jpg
初步确定这就是要定位的目标代码段,重新载入程序逆向往上分析,每一个上方Call都断点F7进入分析,断点Call出来后重新载入程序。(重新载入是为了清除内存残留数据)
一路往上分析到00989D57    E8 0489A7FF     call hexin.00402660  这里会处理输入的假码存放和转存。
20.png
继续向上分析,00989D10    E8 12D98200     call hexin.011B7627           这里会弹出密码输入窗口。
21.png
这里Push EAX出现了真码的信息,上方有一个Call,F7进入。
22.png
进去一路分析到接近段尾,发现真码存放地址。
23.png
真码地址上方发现循环运算和转存的行为。分析发现真码就是由此计算出,但来源数值很可疑,继续往上分析发现还有一处循环计算和转存,也就是说是两次解密操作。
24.png        25.png
此处直接获得了两次解密的算法,基本确定这是一个解码的Call,但还要追踪一个问题,那便是”1IDJAKDPAIDBAJDBAJD“,继续逆向分析。
进入上一个Call发现”1IDJAKDPAIDBAJDBAJD“出现于00AF16BA    8B41 60         mov eax,dword ptr ds:[ecx+0x60]处。
55.png   
26.png
分析发现这个地址是存放真码的地址,重点追踪ECX。返回调用代码一眼就看到了MOV ECX,EDI,追踪ECX变成EDI。
27.png
继续分析发现EDI来源于堆栈中,追踪由EDI变为EBP。
EBP.png
EBP来源于ESP.....00989B91    8BEC            mov ebp,esp
28.png
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:[eax-0xC],0x0            ; 判断输入密码位数是否小于0
没截图                                                                                                     ;转存真假码对比结果,00 or  01
00989D9C    8378 F4 00      cmp dword ptr ds:[eax-0xC],0x0           ;cmp 对比结果,0x00
00989DAA   /74 04           je short hexin.00989DB0                           ; 跳转
00989DE0    E8 F65E8300     call hexin.011BFCDB                             ; 密码错误窗口Call


免费评分

参与人数 23威望 +1 吾爱币 +40 热心值 +21 收起 理由
zsoyo + 1 我很赞同!
vick99 + 1 我很赞同!
cenjy9 + 1 + 1 我很赞同!
kong1850 + 1 用心讨论,共获提升!
9999lzh9999 + 1 + 1 谢谢@Thanks!
jjkey + 1 + 1 大哥求庄家资金的源码 能发我一个么
MrBin + 1 + 1 非常感谢,我用的指标跟你是同样的,不停的研究了5个月了,原本以后解密无.
comiclee + 1 + 1 用心讨论,共获提升!
kangxs + 1 我很赞同!
jiangjc97 + 1 + 1 用心讨论,共获提升!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chengyj78 + 1 + 1 老师牛牛,,,能否帮我和谐通达信DLL文件?
bullshit + 1 + 1 我很赞同!
Leebai1hao + 1 + 1 我很赞同!
ghss + 1 + 1 股灾的年代确定不给个成品让大家收益一下吗
chaobii + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
18687321617 + 1 + 1 我很赞同!
lingyun011 + 1 热心回复!
blindcat + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
pxSkippy + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
zhj666666 + 1 + 1 我很赞同!
fly_hong + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

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

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
fabir1031 + 1 + 1 我很赞同!
XINJIAN9 + 1 + 1 我很赞同!
LLJ杰 + 1 + 1 期待有能直接使用的现成小程序

查看全部评分

MrBin 发表于 2022-8-7 16:13
看不懂啊。。我想对庄家资金指标查看源代码,,看了你的教程,表示完全跟不上操作。出个视频就好了
LLJ杰 发表于 2022-5-7 01:56
zty393 发表于 2022-4-30 19:40
好复杂,哪位大佬能看懂解释一下呗
snow城 发表于 2022-6-19 23:56
多谢分享,最好来个傻瓜式的就好了。
Hmily 发表于 2022-4-29 12:44
贴图错了,搞复杂了,你看下教程https://www.52pojie.cn/misc.php? ... 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
会的多亏的多
zhouxue1028 发表于 2022-4-29 15:18
哈哈。这个好啊。。。福利多多
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 19:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表