yyhd 发表于 2022-4-16 21:06

玩玩破解番外篇1—快速分析汇编代码

本帖最后由 yyhd 于 2022-4-29 11:39 编辑

新人朋友们好:

当你学会了通过下断点找关键代码位置以后,你最需要的是什么?

学会分析代码。

但是很多新人朋友对汇编代码不熟悉,看到这么多代码,头就大了。

于是,只是习惯于找大跳转,然后进行不断的修改测试,蒙对了就完成了破解。

对于程序如何验证的?你还是不清楚。

所以,你很难继续提升自我。

为了便于新人朋友进行代码分析,我做了一个“汇编代码自动翻译小助手”,分享给大家使用。

在介绍工具之前,我先简单谈谈分析汇编代码的思路和步骤。

一、掐头去尾

比如我们现在进入一个关键CALL里面,看下面的代码:



前后两个红色方框内的就是一个子程序通常的头和尾,没有分析的价值,可以忽略掉。

二、重点关注什么

1、关注CALL。
      
      在汇编代码中,CALL就是调用一个函数(子程序),你可以理解为每一个call后面的地址就是一个房间的门牌号,

      (1)如果你F7跟进房间里,你会看到有很多其他的代码,这些代码共同实现某个功能。

      (2)CALL语句的上面如果有push命令,往往就是这个CALL的参数,可以通过CALL语句下面的add esp, ?来判断参数的个数,比如add esp ,0x4就是有一个参数。

      (3)CALL内部的第一个局部变量由或表示,第二个由或表示。


   
2、关注跳转。

      跳转分为无条件跳转和有条件跳转。无条件跳转就是一个jmp,有条件跳转有很多不同的指令。

      因为程序都是通过跳转指令来实现选择不同的执行流程(正确的或是错误的),所以修改关键的有条件跳转指令是爆破一个软件的基本原理。

      因此,我们分析代码要特别关注能够跳到较远的有条件跳转语句,我们称为“大跳转”。

      窍门是看到跳转后有“short”就是小跳,没有的就是大跳。



3、重点关注参数是用户名和假码的CALL。

      (1)push用户名    然后   call地址    。这样的call一般是取真注册码的CALL(算法CALL)。

      (2)push假码    push可疑字符串    然后CALL 地址。这样的CALL一般是验证CALL(关键CALL),下面大的跳转大概率是关键跳。

      (3)push假码   或者 moveax,假码 ,然后CALL地址,你可以进CALL以后,直接在段首把代码改为mov eax,1,retn ?。

总结一下:

所谓逆向中分析代码,就是在关键代码段中找到算法CALL、验证CALL、关键跳。

所以分析代码的重点是CALL和有条件大跳。

下面简要介绍这个“汇编代码自动翻译小助手”,你可以试试看?

首先声明一下:

1、我只是利用业余时间写的,只做了简单测试,如果有BUG纯属正常,请见谅。

2、本助手的好处是新人们可以对照汇编代码看中文翻译,时间长了,你就可以不用这个工具直接看汇编代码了,这才是目标。

软件截图:

1、原始汇编代码



2、自动翻译后的代码:





如果您觉得对您有用,请对我继续鼓励和支持,我会继续努力!

玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行!
玩玩破解—小白实战5,易语言变脸
玩玩破解——小白实战6,再上一层楼,做个注册机
新年送“心”礼,易语言逆向分析助手6.0
重新认识Delphi程序按钮事件特征码
玩玩破解番外篇1—快速分析汇编代码
玩玩破解之逆向工具篇

yyhd 发表于 2022-4-17 22:45

狄人3 发表于 2022-4-17 20:40
Emm,其实应该纠正一点,就是call之后add esp来看参数是因为函数是cdecl的,由主程序负责平衡栈,而别的不一 ...

说的对,谢谢提醒。_cdecl是win32编程时默认使用的调用约定,__stdcall调用约定用于调用Win32 API函数。因为这个工具用来分析软件作者自己写的CALL,所以主要考虑了第一种调用方式。

kof888 发表于 2022-4-17 06:55

小跳我知道,摇杆快速输入后斜下,然后快速输入前斜上,马上放开摇杆

大跳是摇杆快速输入后斜下,然后快速输入前斜上,摇杆保持方向不变。:lol

不开玩笑了,很多call会带返回值,这个值也是比较重要的参数,一般都会根据这个值来进行判断分之。

ss1314 发表于 2022-4-16 21:10

谢谢,这个开好了,

刀大喵 发表于 2022-4-16 21:22

大佬出品 必属精品

非凡一寓 发表于 2022-4-16 21:29

非常好,对看懂代码帮助很大{:1_921:}

mojingtai 发表于 2022-4-16 21:36

谢谢,这个好,

wen1102 发表于 2022-4-16 21:41


老师给指点一下,搜不到注册提示失败字符串怎么下手
软件地址:http://www.onlinedown.net/soft/251418.htm

zwh8698 发表于 2022-4-16 21:41

这个经典啊

byh3025 发表于 2022-4-16 21:46

wen1102 发表于 2022-4-16 21:41
老师给指点一下,搜不到注册提示失败字符串怎么下手
软件地址:http://www.onlinedown.net/soft/251418. ...

记得这个打印助手是有花指令的,所以搜索不到字符串,

bjxiaoyao 发表于 2022-4-16 21:53

感谢大佬,学你的系列教程收获很大

天空の幻像 发表于 2022-4-16 22:04

呀,这个好像很方便
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 玩玩破解番外篇1—快速分析汇编代码