1625-5 王子昂 总结《2017年6月3日》 【连续第245天总结】

A.CrackMe(13)

B.中间几个的难度是三星和???……吓到我了,完成第一页以后再去挑战这几个吧

第13个拖入PEiD,显示VB,无壳

拖入OD,运行,有两关,分别是Serial和Name/Serial

Serial:

随便输入一个,点击Try以后在文本框内显示了Try Again!

没有MsgBox,就无法锁定调用了

直接在内存中搜索字符串,也毫无收获

右键,查找→所有模块中的标签,找到GetWindowTextA,双击进入

下断,点击Try后果然断到了,从堆栈中找到调用,然后F8单步跟下去

跟了一段以后,内存中出现了另一个字符串“7714318”

尝试输入,成功

注册机就没办法了,一直在系统领空中徘徊,找不到主模块的地址

Name/Serial:

同样过程,Name输入123456,Serial输入654321

跟了一段以后内存中出现了“26023-94362”

尝试输入Serial,成功

注册机一样没辙,找不到计算的确切位置

查找论坛,得知应该使用VB Decompiler pro,遂下载并拖入,成功反编译出了源码

流程为:在单击选择框的时候,由日期计算出第一个Serial,如果选中的是第一个则将其赋值给一个隐藏Label的Caption,然后在点击Try的时候确认两者是否相等;

算法:

loc_4053A8: var_88 = CLng((((Day(Now) * Day(23)) + (Month(Now) * Month(2))) + (Year(Now) * Year(3))))
  loc_4053DB: var_1D0 = CStr((((var_88 + var_88) + CLng((Day(14) * Year(2020)))) + CLng((Day(14) * Year(2020)))))

手动算了一下是错误的,打开一个VB输入这两行则是正确的

在VB的立即窗口中实验了Day和Year函数,理解不能

百度和官方文档中都只有Day(now)和Year(now)或者放入Date类型的参数的用法

立即窗口中,Day(23)=22,Month(2)=1,Year(3)=1900,Year(2020)=1905

另外Month参数给什么都得1,除了Month(1)=12

不明白这几个函数的原理,但是能用VB算出结果,这样可以作出注册机

Name/Serial:

源代码为:

Dim var_90 As Long
  Dim var_1CC As Variant
  loc_4055EE: If (Len(Me.Text1.Text) < 5) Then
  loc_4055FE:   Me.Text2.Text = "At least 5 characters!"
  loc_405606:   Exit Sub
  loc_405607: End If
  loc_40560A: var_94 = "0110617121214051216101106141404110614140411091211100810101608040610121608100416"
  loc_405622: var_98 = Me.Text1.Text
  loc_40562D: var_A8 = 1 'Variant
  loc_405641: For var_108 = 4 To CVar(Len(var_98)): var_C8 = var_108 'Variant
  loc_405698:   var_90 = CLng((CDbl(var_90) + (CDbl(Asc(Mid$(var_98, CLng(var_C8), 1))) * Val(Mid$(var_94, CLng((var_A8 * 3)), 3)))))

loc_4056C4:   If ((var_A8 + 1) >= 39) Then

//论坛说此处反编译错误,应该是var_A8=var_A8+1,If((var_A8)>=39)  Then ...
  loc_4056CC:     var_A8 = 0 'Variant
  loc_4056D0:   End If
  loc_4056D3: Next var_108 'Variant

//第一段:从Name的第四位取起,第n个字符的ASCII和码表的第n组相乘(每三个数一组),累加
  loc_4056DE: var_A8 = 1 'Variant
  loc_4056F2: For var_168 = 4 To CVar(Len(var_98)): var_C8 = var_168 'Variant
  loc_405764:   var_1CC = CVar((CDbl((Asc(Mid$(var_98, CLng(var_C8), 1)) * Asc(Mid$(var_98, CLng((var_C8 - 1)), 1)))) * Val(Mid$(var_94, CLng((var_A8 * 2)), 2)))) 'Double
  loc_40576C:   var_178 = (var_178 + var_1CC) 'Variant
  loc_40579D:   If ((var_A8 + 1) >= 39) Then
  loc_4057A5:     var_A8 = 0 'Variant
  loc_4057A9:   End If
  loc_4057AC: Next var_168 'Variant

//第二段:从Name的第4位取起,每个字符的ASCII和前一个字符的ASCII相乘,再乘以码表第n组(每两个数一组),累加求和
  loc_405815: If (Me.Text2.Text = LTrim$(Str$(var_90)) & "-" & LTrim$(Str$(var_178))) Then
//判断Serial是否为第一段+'-'+第二段

loc_405824:   Me.Command2.Visible = False
  loc_405838:   Me.Command1.Visible = False
  loc_40584C:   Me.Command5.Visible = True
  loc_405860:   Me.Command3.Visible = False
  loc_405874:   Me.Text2.Visible = False
  loc_405888:   Me.Frame3.Visible = True
  loc_4058BD:   Me.Label3.Caption = "Congratulation " & Me.Text1.Text & " !"
  loc_4058D5: Else
  loc_4058E2:   Me.Text2.Text = "Try Again!"
  loc_4058EA: End If

反编译出源代码以后就很轻松的可以写出注册机了,不同语言基本上要借助于不同的反编译软件

尝试用IDA反编译,但没能找到目标函数

C.明日计划

CrackMe(14)

170604 逆向-CrackMe之013相关推荐

  1. 170621 逆向-CrackMe之027

    1625-5 王子昂 总结<2017年6月21日> [连续第262天总结] A. CrackMe B. 大概了解了一下ELF文件,Linux平台下的可执行文件,使用终端可以执行 在win平 ...

  2. 170617 逆向-CrackMe之024

    1625-5 王子昂 总结<2017年6月17日> [连续第258天总结] A.CrackMe(24) B.这个CM做了好几天了,第一次见到自己修改自己指令的判断,还是挺懵的 放到PEiD ...

  3. 170527 逆向-CrackMe(4)

    1625-5 王子昂 总结<2017年5月27日> [连续第238天总结] A. CrackMe(4) B. 先拖到PEiD,无壳,是Delphi 打开,是一个没有按钮的序列号验证 拖入O ...

  4. 170613 逆向-CrackMe之023

    1625-5 王子昂 总结<2017年6月13日> [连续第254天总结] A.CrackM(19) B.PEiD显示是TASM/MASM写的,貌似是纯汇编?居然有界面 打开,没有弹窗和按 ...

  5. 2022DASCTF Apr X FATE 防疫挑战赛复现

    misc 第二题: wireshark打开直接搜字符串flag,发现4个字段含有flag,其中一个发现是zip文件,想把它提取出来, 将他数据导入一个新的zip文件,打开 在50段找到密码加密字段,找 ...

  6. IDA Pro逆向实战之Crackme(简单篇)

    IDA Pro逆向实战之Crackme(简单篇) 今天手闲的很,没事就拿出了以前没解决的逆向题来做一下,具体的源程序在附件里,废话少说,直接上菜: 0.   源程序运行效果(输入不对的,直接退出): ...

  7. 逆向破解之160个CrackMe —— 007

    CrackMe -- 007 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  8. 逆向破解之160个CrackMe —— 023-024

    CrackMe -- 023 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  9. 【CrackMe 实战】逆向破解实战之 001 Acid burn.exe

    CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能 ...

最新文章

  1. 智慧城市资金瓶颈亟待突破
  2. 深层学习:心智如何超越经验2.3 解释变化
  3. INFO ipc.Client:Retrying connect to server 9000
  4. Python入门100题 | 第030题
  5. 直播这把“火”,还能烧多久?
  6. 【Linux系统编程】POSIX无名信号量
  7. 使用 stm32实现锂电充电_千次循环使用,ZMI可充电锂电池套装,够用一辈子吗?...
  8. Linxu:磁盘分区
  9. 源码完全注释:socket select
  10. [Guava源码日报](8)ImmutableCollection
  11. python中的变量是动态类型的什么意思_python基础语法之变量
  12. HTML 教程-菜鸟教程
  13. 僵尸网络项目代码-DDOS攻击复现-研究报告
  14. 大数据为湖湘互联网发展加码
  15. 用字节数组存放二维地图数据
  16. 来自GPU的Hello World-基于Win10+VS2019+CUDA 11.0搭建CUDA编程环境
  17. CSAPP datalab实验
  18. codeforces round 717 div2 D
  19. 我大抵是病了,横竖都睡不着。
  20. 【网络安全】基于网络攻击链的安全防护思考

热门文章

  1. Python matplotlib与tkinter结合
  2. 离职了,写点什么吧~
  3. 通过snmp获取设备和系统信息
  4. excel - 选择无限远区域(无穷区域)+ 取消隐藏 第一行
  5. 火鸟Firebird数据库的中文参考资料
  6. python中end 的意思_python中“end=”是什么意思?
  7. 【原创】职场:聊聊那些领导没挑明的话
  8. Mac——开启键盘F1 - F12功能键
  9. 1月14日科技资讯|京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布
  10. Vue3-uniapp上传图片到七牛云(身份证信息)