[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

TraceMe.exe逆向&算法分析

本帖最后由 老刘1号 于 2017-7-25 17:52 编辑


OD加载程序,可以看到有2个输入框

由于要逆向分析,应该在程序获取用户输入之后,做计算之前开始分析

定下思路,先向得到字符串的函数下断,然后返回、跟踪程序代码分析即可。

程序是ANSI编码,出现长成这样的对话框有俩种可能的函数:

一个一个试试。

反汇编窗口中Ctrl+G跟踪函数

找到后下硬断(软断对DLL无用)



同理,另一个函数的查找,下断过程就不赘述了

运行程序,输入用户名,随便填一个序列号

如果用户名小于4个,则不会调用算法计算,故应将用户名加长

序列号随意,没有也罢


点击Check,发现程序卡在硬断处

Alt+F9回到软件领空

发现是GetDlg函数

而且紧接着下面还有一个

一路步过即可

运行到如图所示位置就应该开始注意了


首先在数据窗口中Ctrl+G跟踪Esp+0x4C

发现就是用户名的储存位置


那么下一句Test大约就是判断用户是不是没有输入东西了

Cmp是看看用户是不是输入了5个以下的字符(不知道多会,EBX已经变成了你输入的用户名的长度)

略过即可

再下面的俩个lea分别对应储存用户名的内存地址和你输的序列号,略过

CALL调用程序内地址,较为可疑,跟入

大略扫一下,判断+各种计算,大约就是算法地址了

好好分析一下


其中给ECX赋常数较为可疑(即MOV ECX,3)

以后注意

仔细观察下方jle,比较ecx(即3)与字符串长度的值(esp+0x18处的值稍加观察即可发现是字符串长度)

也就是判断你是不是输太短了,太短了就直接跳,不运行算法,并且报错

步过


这个循环一股脑的在计算什么东西,目测就是序列号了

分析算法可得,循环跳过用户名的前3个字符,依次将字符的Ascii码与一段程序内的内存对应相乘,并且将结果累加到Esi

分析下各个寄存器的作用

EAX:程序内的内存指针,与ECX一同递增,每次与字符Ascii相乘,且运算完第8个数后循环回第一个数

ECX:用户名内存指针,跳过用户名前3个字符

BL:字符Ascii

DL:和字符Ascii相乘的Hex

ESI:结果存放

EDI就是字符串长度,判断是不是要继续循环

到这里算法分析就基本结束了

循环结束后,将Hex换成等价的十进制数,并与用户输入的进行对比,相同则成功

用VBS写了这个程序的注册机,代码如下:

  1. str = InputBox("Enter:")
  2. If Len(str) < 4 Then WScript.Quit
  3. Dim Map(7)
  4. Map(0) = &HC
  5. Map(1) = &HA
  6. Map(2) = &H13
  7. Map(3) = &H9
  8. Map(4) = &HC
  9. Map(5) = &HB
  10. Map(6) = &HA
  11. Map(7) = &H8
  12. For i = 4 To Len(str)
  13. [结果] = [结果] + Asc(Mid(str,i,1))*Map((i-4) Mod 8) 'Mod 8 即对应运算完第8个数后循环回第一个数的汇编代码  
  14. Next
  15. MsgBox [结果]
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

    • a2002: 习惯性的-技术 + 1
老刘的小站:http://lbcpc.3vcm.net

这个就不明觉厉了
综合型编程论坛
Writing Code That Nobody Else Can Read.

TOP

回复 2# 523066680


    Emmm,没事
逆向在向你招手
老刘的小站:http://lbcpc.3vcm.net

TOP

回复 3# 老刘1号


    老刘厉害啊
原创区不能发,帖子随便放

TOP

本帖最后由 老刘1号 于 2017-7-25 19:21 编辑

回复 4# a2002


    过奖,刚入门而已。
这是我逆的第一个程序~

其他:居然翻到了程序算法部分的C源码,贴上

和我想象的差不多啊,我这个不会C的人居然借助汇编代码看懂了C
老刘的小站:http://lbcpc.3vcm.net

TOP

回复 5# 老刘1号


    有发明注册机的前途...
原创区不能发,帖子随便放

TOP

回复 6# a2002


    没想这么深,
我学这个的目标是修改游戏hahaha~
再说咱们应该尊重软件作者,破解这种行为是不好滴。
老刘的小站:http://lbcpc.3vcm.net

TOP

本帖最后由 a2002 于 2017-7-25 20:16 编辑

修改游戏是对游戏作者的尊重...

---------------------------------------
人们常说时间就是金钱(time=money)
又说知识就是力量(knowledge=power)
物理课本:P=W/t(Power=Work/time)
=>knowledge=Work/money
即money=Work/knowledge
所以               money与knowledge成反比
那么。。。你懂的
原创区不能发,帖子随便放

TOP

回复 5# 的图片


    这图你这么拍的?好模糊啊,照相机?
原创区不能发,帖子随便放

TOP

回复 8# a2002


    我想游戏作者不会在意这些细节的~
软件作者修改那是直接侵犯了人家的利益
没想那么多,业余搞搞
老刘的小站:http://lbcpc.3vcm.net

TOP

That sounds good(→→)
原创区不能发,帖子随便放

TOP

回复 8# a2002


    哈哈,这是哪翻出来的推理
懒得吐槽了
你还是有些嫩
有些单纯
等长大几岁再评价这个世界吧
老刘的小站:http://lbcpc.3vcm.net

TOP

回复 12# 老刘1号


    这竟让我无言以对
原创区不能发,帖子随便放

TOP

返回列表