我想知道是否有办法用OllyDebug破解C#Windows应用程序.我用Visual C#2010 Express编写了一个简单的CrackMe应用程序.当我用OllyDebug打开它并根据需要修改ASM代码时,OllyDebug中没有"复制到可执行文件"选项,因为我的注册表单窗口是用"new"运算符动态分配的(我相信,VirtualAlloc()函数调用在调试器中).虽然我能够修改ASM代码(这只是NOP的JE跳转),但我无法用破解的代码保存我的.exe文件,看起来像OllyDbg"看到"数据段中的代码,当时该代码不存在应用程序启动并且仅动态分配.任何人都可以帮我解决这个问题吗?我认为至少有两种方法可以修改*.exe:
1)使用OllyDbg深入挖掘代码并在分配之前找到保存实际代码的位置(因为RegistrationForm的新实例不会神奇地超出空间,是吗?)
2)如果它允许在VS Express中快速创建应用程序并且不需要太多复杂的代码,则使用静态调用,因此每次单击"Register"时都会显示相同的RegistrationForm窗口(它将保存在应用程序的代码部分中,因此将在OllyDbg中修改.
可以指出如何重写代码并保持简单分配RegistrationForm(singleton?)的相同实例.我唯一需要的是破解并保存*.exe,重新启动并填写任何数据以"完成注册".
以下是使用Main()方法的MyCrackMe类的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyCrackMe {
class MyCrackMe {
public static void Main() {
MyForm mainWindow = new MyForm();
System.Windows.Forms.Application.Run(mainWindow);
}
}
}
Run Code Online (Sandbox Code Playgroud)
主窗口类:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyCrackMe {
public partial class MyForm : Form {
public MyForm() {
InitializeComponent();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
Application.Exit();
}
private void aboutToolStripMenuItem_Click(object …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Java,Spring,Hibernate和MySQL制作简单的CRUD Web应用程序.我遇到的问题是我无法显示表单以向数据库添加新项目(比萨饼).
这是我的控制器:
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
@Controller
public class PizzaController {
@Autowired private PizzaDao pizzaDao;
@RequestMapping(method=RequestMethod.GET, value="/")
public String indexPage(Model model) {
List<Pizza> pizzas = pizzaDao.getAll();
model.addAttribute("pizzas", pizzas);
return "index";
}
@RequestMapping(method=RequestMethod.GET, value="Pizza/pizzalist")
public String pizzalist(Model model) {
List<Pizza> pizzas = pizzaDao.getAll();
model.addAttribute("pizzas", pizzas);
return "pizzalist/pizzalist";
}
@RequestMapping(method=RequestMethod.POST, value="Pizza/pizzalist/add")
public String add(@ModelAttribute("mypizza") Pizza pizza) { //, BindingResult result, SessionStatus status, ModelMap …Run Code Online (Sandbox Code Playgroud)