下你所需,载你所想!
IT技术源码资料下载网站

程序逆向破解详细分析教程

:其他软件 2019-05-30 17:08:18

易语言开发的软件逆向破解详细分析教程


.版本 2

.程序集 窗口程序集_启动窗口

.子程序 _按钮1_被单击

置入代码 ({ 235, 254, 235, 254, 235, 254 })
.如果真 (编辑框1.内容 = “admin”)
    信息框 (“flag”, 0, , )
.如果真结束
置入代码 ({ 235, 254, 235, 254, 235, 254 })的作用是起一个标志,方便在反汇编中查看。如下图

 这就是汇编中看到的,程序会在执行到此处进入死循环。在实际调试中可以修改为nop来跳过
二、加载核心库
 程序只有一个按钮和一个文本框,点击弹出信息框,F7编译(非静态编译或独立编译)

 看到程序调用了sub_40108E

sub_4011E4用来获取程序运行的argv[0](程序运行的全路径),并且返回路径(不包括程序名)。
v0 = lstrcatA(String1, "krnln.fnr");将krnln.fnr拼接到路径后面
v1 = LoadLibraryA(v0);载入指定的动态链接库
如果当前路径不存在krnln.fnr那么就去zc表读取易语言安装路径的lib
RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\FlySky\\E\\Install", 0, 0x20019u, &phkResult)

 随后调用核心库中的GetNewSock(1000)函数

IDA打开krnln.fnr

 此时采用x32dbg动态调试

 下面的00401175 call eax就是要进入krnln.fnr中的GetNewSock(1000)函数了,完成一些初始化操作。
三、快速定位功能

 程序开头会进入一个函数,按F7进去

 在call eax这里按F4执行到这里,F7进去,这里将要进入krnln.fnr执行初始化

 在图中所示call krnln.1B9DC3F处按F4,再按F7进入

 下方有一个call eax,这里将离开krnln返回exe中,完成初始化。直接在这里按F4、F7返回。

 返回地址的上方就是我们自己写的代码的汇编,由于我们设计了标志,可以方便的找到。

 接下来就可以分析了。