玩玩破解番外篇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—快速分析汇编代码
玩玩破解之逆向工具篇 狄人3 发表于 2022-4-17 20:40
Emm,其实应该纠正一点,就是call之后add esp来看参数是因为函数是cdecl的,由主程序负责平衡栈,而别的不一 ...
说的对,谢谢提醒。_cdecl是win32编程时默认使用的调用约定,__stdcall调用约定用于调用Win32 API函数。因为这个工具用来分析软件作者自己写的CALL,所以主要考虑了第一种调用方式。 小跳我知道,摇杆快速输入后斜下,然后快速输入前斜上,马上放开摇杆
大跳是摇杆快速输入后斜下,然后快速输入前斜上,摇杆保持方向不变。:lol
不开玩笑了,很多call会带返回值,这个值也是比较重要的参数,一般都会根据这个值来进行判断分之。 谢谢,这个开好了, 大佬出品 必属精品 非常好,对看懂代码帮助很大{:1_921:} 谢谢,这个好,
老师给指点一下,搜不到注册提示失败字符串怎么下手
软件地址:http://www.onlinedown.net/soft/251418.htm 这个经典啊 wen1102 发表于 2022-4-16 21:41
老师给指点一下,搜不到注册提示失败字符串怎么下手
软件地址:http://www.onlinedown.net/soft/251418. ...
记得这个打印助手是有花指令的,所以搜索不到字符串, 感谢大佬,学你的系列教程收获很大 呀,这个好像很方便